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改为一致!并且在同一个包下!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。