从头学习Spring之二(数据操作之MyBatis)

一、引入依赖

   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 }

 

posted @ 2021-03-05 22:09  xiao_lin  阅读(66)  评论(0编辑  收藏  举报