介绍

mp是mybatis-plus的增强工具,提高开发效率,不用在写各种dao层设施,自动生成

  • 扩展注解
  • 拓展插件
  • 代码生成器

    mybatis-plus实现mapper的过程

  1. pom依赖

    1. <dependency>
    2. <groupId>com.baomidou</groupId>
    3. <artifactId>mybatis-plus-boot-starter</artifactId>
    4. <version>3.4.1</version>
    5. </dependency>
  2. 配置properties/yml

    1. mybatis-plus.mapper-locations=classpath:mapper/*Mapper.xml
    2. mybatis-plus.configuration.map-underscore-to-camel-case=true
    3. mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
  3. mapper、service配置

    1. 通用mapper
    2. mapper 继承 baseMapper<T>
    3. 通用service
    4. service 继承 Iservice<T> - @Service注解
    5. serviceImpl 继承ServiceImpl<T,T> 实现 Service
  4. 启动类

    1. 启动类加入MapperScan 接入加入@mapper注解

    mp的注解

  • @TableId:专门给主键使用进行映射
    • type:生成主键策略
      • IdType.ASSIGN_ID 默认值,雪花id
      • IdType.AUTO自增,需要数据表设置自增字段
      • IdType.INPUT手动输入
      • IdType.ASSIGN_IDid为空时,自动填充雪花id,主键类型number或string
      • IdType.ASSIGN_UUID主键为空时,自动填充UUID,主键必须是String
  • @TableName:关联数据库表名
    • value:默认字段名,实体对于表名
  • @TableField:关联数据库字段名
    • value:默认字段名,实体对于表名
      • mapUnderscoreToCamelCase为true时:
        • 数据库字段值.replace("_","").toUpperCase() == 实体属性名.toUpperCase()
      • mapUnderscoreToCamelCase为false时:
        • 数据库字段值.toUpperCase() == 实体属性名.toUpperCase()
    • exist:默认true,是否为数据库字段
    • select:默认true,是否进行select查询
    • fill:字段自动填充策略
      • DELETE:默认不填充
      • INSERT:表示在插入操作时赋值(create_time)
      • UPDATE:在更新操作时,更新值
      • INSERT_UPDATE:插入和更新操作都会更新字段(update_time)
  • @TableLogic:将删除操作变成修改操作

    mp的插件

    ```java 在configuration注解中安装乐观锁插件 @Configuration public class MybatisConfig { @Bean public MybatisPlusInterceptor a(){
    1. MybatisPlusInterceptor Interceptor = new MybatisPlusInterceptor();
    2. Interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
    3. // 安装分页插件
    4. Interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
    5. // 安装乐观锁插件
    6. return Interceptor ;
    } } 分页插件 IPage userIPage = new Page(){{ setSize(2); // 获取两个数据 setCurrent(2); // 从第二个开始 }}; IPage userIPageResult = userMapper.selectPage(userIPage, null); // 使用分页插件,获取分页对象 List records = userIPageResult.getRecords(); // 获取数据

乐观锁插件 //在某字段中设置乐观锁注解 @Version // 使用乐观锁插件 private Integer version; ```

Wrapper

wrapper是mybatis-plus的条件拼装查询器

构造器关系

7c36f628f808f88e78fec41debad3489_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lme5Yqb6ams5omO572X44Gu6buO5piO,size_20,color_FFFFFF,t_70,g_se,x_16.png
Wrapper : 条件构造抽象类,最顶端父类
AbstractWrapper 查询条件封装,⽤于⽣成 sql 中的 where 语句。

  • QueryWrapper Entity 对象封装操作类,⽤于查询。
  • UpdateWrapper Update 条件封装操作类,⽤于更新。
  • AbstractLambdaWrapper 使⽤ Lambda 表达式封装 wrapper
    • LambdaQueryWrapper 使⽤ Lambda 语法封装条件,⽤于查询。
    • LambdaUpdateWrapper 使⽤ Lambda 语法封装条件,⽤于更新。

      函数说明

      42961fa25b28a23db651401b508ffd50_watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5Lme5Yqb6ams5omO572X44Gu6buO5piO,size_20,color_FFFFFF,t_70,g_se,x_16.png