一、引入依赖
mybatis-spring-boot-starter
二、添加配置
# mapper文件位置 mybatis.mapper-locations = classpath*:mapper/**/*.xml # 实体类或者vo类位置的包名,则在xml文件中可以直接写类名而不用写全名 mybatis.type-aliases-package = 类型别名的包名 # 类型转换 mybatis.type-handlers-package = TypeHandler扫描包名 # 下划线与驼峰规则做对应 mybatis.configuration.map-underscore-to-camel-case = true
三、 Mapper 的映射与扫描以及简单实用
1. @MapperScan 注解
配置扫描位置
2. @Mapper 注解
定义接口
3.映射的定义:
XML 方式:
mapper 接口:
1 @Mapper 2 public interface UserMapper{ 3 4 User selectById(@Param("id") Integer id); 5 6 }
实体类:
1 @Data 2 @TableName("user") 3 public class User{ 4 5 private Integer id; 6 private String name; 7 8 }
XML 映射文件:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="UserMapper"> 4 5 <resultMap id="BaseResultMap" type="User"> 6 <id column="id" property="id" /> 7 <result column="name" property="name" /> 8 </resultMap> 9 10 <select id="selectById" resultType="User"> 11 SELECT 12 id,name 13 FROM 14 user 15 WHERE 16 id = #{id} 17 </select> 18 19 </mapper>
方法调用:
1 @SpringBootTest 2 public class Test{ 3 4 @Autowired 5 private UserMapper userMapper; 6 public void test(){ 7 8 User user = userMapper.selectById(1); 9 10 } 11 }
注解方式:
mapper接口:
1 @Mapper 2 public interface UserMapper{ 3 4 @Select("select id,name from user where id = #{id}") 5 User selectById(@Param("id") Integer id); 6 7 }
实体类同上
不需要 XML 文件
方法测试代码同上
四、类型映射处理
MyBatis 使用 TypeHandler 进行 JAVA 类型与数据库数据类型的转换:如时间类型有 DateTypeHandler 进行处理
自定义映射处理只需要新建一个 TypeHandler 类并继承 BaseTypeHandler 即可,注意不要与已有的类重名:如 Money 可以使用 joda-money 中的 Money ,其转换可以自定义一个 MoneyTypeHandler 并重写其中的方法进行转换
五、分页
使用 MyBatisPageHelper 工具
1 public PageInfo<User> getUser(Integer page){ 2 // page是从第几页开始,pageSize是每页多少条数据 3 PageHelper.startPage(page,pageSize); 4 List<User> users = userMapper.getUsers(); 5 return new PageInfo<User>(users); 6 }