1、外围配置文件
- mybatis-config.xml
-
Mybatis 的配置文件蕴含了会深深的影响 Mybatis 行为的设置和属性信息
configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库厂商标识)mappers(映射器)
1.1、新建 maven 我的项目
编写工具类
package com.jialidun.utils; //sqlSessionFactory--->sqlSession public class MybatisUtils{ private static SqlSessionFactory sqlSessionFactory; static{ try{ // 应用 mybatis 第一步:获取 sqlSessionFactory 对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch(IOException e){e.printStackTrace(); } } // 既然有了 SqlSessionFactory,顾名思义,咱们能够从中取得 SqlSession 的实例。//SqlSession 提供了在数据库执行 SQL 命令所需的所有办法。public static SqlSession getSqlSession(){return sqlSessionFactory.openSession(); } }
实体类
package com.jialidun.pojo; @Data public class User{ private int id; private String name; private String pwd; }
接口
package com.jialidun.dao; public interface UserDao{ // 查问全副用户 List<User> getUserList(); // 依据 id 查问用户 User getUserById(int id); //insert 一个用户 int addUser(User user); // 批改用户 int updateUser(User user); // 删除用户 int deleteUser(int id); }
mapper.xml 映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace= 绑定一个对应的 Dao/Mapper 接口 --> <mapper namespace="com.jialidun.dao.UserDao"> <!--select 查问语句 --> <select id="getUserList" resultType="com.jialidun.pojo.User"> select * from mybatis.user </select> <select id="getUserById" parameterType="int" resultType="user"> select * from mybatis.user where id = #{id} </select> <!-- 对象中的属性,能够间接取出来 --> <insert id="addUser" parameterType="com.jialidun.pojo.User"> insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd}); </insert> <update id="updateUser" parameterType="com.jialidun.pojo.User"> update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}; </update> <delete id="deleteUser" parameterType="int"> delete from mybatis.user where id=#{id}; </delete> </mapper>
测试
package com.jialidun.dao; public class UserDaoTest{ @Test public void test(){ // 第一步:取得 SqlSession 对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); try{UserDao userDao= sqlSession.getMapper(UserDao.class); List<User> userList = userDao.getUserList(); // 形式二://List<User> userList = sqlSession.selectList("com.jialidun.dao.UserDao.getUserList"); for(User user:userList){System.out.println(user); } }catch(Exception e){e.printStackTrace(); }finally{ // 敞开 SqlSession sqlSession.close();} } @Test public void getUserById(){SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); User user = mapper.getUserById(1); System.out,println(user); sqlSession.close();} @Test public void addUser(){SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); int num = mapper.addUser(4,"沙和尚","444555"); if(num>0){System.out.println("增加用户胜利!"); } // 提交事务 sqlSession.commit(); sqlSession.close();} @Test public void updateUser(){SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); mapper.updateUser(new User(4,"悟净","666666")); // 提交事务 sqlSession.commit(); sqlSession.close();} @Test public void deleteUser(){SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserDao.class); mapper.deleteUser(4); // 提交事务 sqlSession.commit(); sqlSession.close();} }
2、环境配置(encironments)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration 外围配置文件 -->
<configuration>
<!-- 引入内部配置文件 -->
<properties resource="db.properties">
<property name="username" value="root"/>
<property name="password" value="1111"/>
</properties>
<!-- 能够给实体类起别名 -->
<typeAliases>
<package name="com.jialidun.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/jialidun/dao/UserMapper/xml"/>
</mappers>
</configuration>
Mybatis 能够配置成适应多种环境
不过要记住:只管能够配置多个环境,但每个 SqlSessionFactory 实例只能抉择一种环境。
学会应用配置多套运行环境!
Mybatis 默认的事务管理器就是 JDBC,连接池:POOLED
3、属性(properties)
咱们能够通过 properties 属性来实现援用配置文件
这些属性能够在内部进行配置,并能够进行动静替换。你既能够在典型的 Java 属性文件中配置这些属性,也能够在 properties 元素的子元素中设置。【db.properties】
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC%2B+8
username=root
password=root
在外围配置中引入
<!-- 引入内部配置文件 -->
<properties resource="db.properties">
<property name="username" value="root"/>
<property name="password" value="1111"/>
</properties>
- 能够间接引入内部文件
- 能够在其中减少一些属性配置
- 如果两个文件有同一个字段,优先应用内部配置文件的!
4、typeAliases(类型别名)
- 类型别名可为 Java 类型设置一个缩写名字
- 意在升高冗余的全限定类名书写
<!-- 能够给实体类起别名 -->
<typeAliases>
<tyoeAlias type="com.jialidun.pojo.User" alias="User"/>
</typeAliases>
也能够指定一个包名,MyBatis 会在包名上面搜寻须要的 Java Bean,比方:
死奥秘实体类的包,它的默认别名就为这个类的类名,首字母小写!
<!-- 能够给实体类起别名 -->
<typeAliases>
<package name="com.jialidun.pojo"/>
</typeAliases>
在实体类比拟少的时候,应用第一种形式
如果实体类非常多,倡议应用第二种
第一种能够自定义别名,然而第二种不能够自定义,如果非要改,须要在实体类上增加 @Alias(“xxx”)注解
@Alias("user")
public class User{
private int id;
private String name;
private String pwd;
}
5、settings(设置)
这是 MyBatis 中极为重要的调整设置,它们会扭转 MyBatis 的运行时行为。
6、其余配置
- typeHandlers(类型处理器)
- objectFactory(对象工厂)
-
plugins(插件)
mybatis-generator-core
mybatis-plus
通用 mapper7、映射器(mappers)
MapperRegistry:注册绑定咱们的 Mapper 文件
形式一:【举荐应用】<mappers> <mapper resource="com/jialidun/dao/UserMapper/xml"/> </mappers>
形式二:
<mappers> <mapper class="com.jialidun.dao.UserMapper"/> </mappers>
形式三:应用扫描包进行注入绑定
<mappers> <package name="com.jialidun.dao"/> </mappers>
留神点:
- 接口和他的 Mapper 配置文件必须同名
- 接口和他的 Mapper 配置文件必须在对立包下
将数据库配置文件内部引入
实体类别名
保障 UserMapper 接口和 UserMapper.xml 改为统一!并且在同一个包下!