• MybatisPlus常用设置


    个人博客地址:
    http://xiaohe-blog.top

    1. 开启日志

    如果需要mp将SQL语句打印出来,可以配置日志输出。

    mybatis-plus:
     configuration:
      # 打印SQL语句(日志)到控制台
      log-impl: org.apache.ibatis.logging.stdout.stdOutImpl
    
    • 1
    • 2
    • 3
    • 4

    2. 设置Mapper文件扫描位置

    mybatis-plus:
     # resource目录下mapper文件夹下所有xml文件 
     mapper-locations: classpath*:/mapper/*.xml
    
    • 1
    • 2
    • 3

    3. 设置逻辑删除字段

    1. 单独设置

      逻辑删除字段上加 @TableLogic

      public class Order {
          // 使用逻辑删除要给数据库中的字段一个默认值
          // 默认未删除值为0.默认已删除值为1
          @TableLogic
          private Integer isDeleted
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    2. 全局设置

      mybatis-plus:
       global-config:
        db-config:   
         logic-delete-field: isDeleted  # 逻辑删除字段值
         # 下面的根据需求来
         logic-delete-value: 1 # 逻辑已删除值(默认为1)
         logic-not-delete-value: 0 # 逻辑未删除值(默认为0)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

    4. 设置自动填充字段

    第一步 :给需要进行自动填充的字段加上注解 :@TableField()

    属性 fill 的值为枚举类 FieldFill,值如下:

    1. 默认不做处理:
    # DEFAULT
    
    2. 插入时填充字段:
    # INSERT
    
    3. 更新时填充字段:
    # UPDATE
    
    4. 插入和更新时都填充字段:
    # INSERT_UPDATE
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    • 1
    • 2

    第二步:填充什么 ?

    实现 MetaObjectHandler 接口,并将其注入 Spring。

    // MetaObject 参数代表传入的数据,例如:user、order...
    // 可以通过 metaObject.setValue(String tableName, Object obj) 给它设置值。
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {
        // 插入数据自动填充
        @Override
        public void insertFill(MetaObject metaObject) {
            metaObject.setValue("createdTime", LocalDateTime.now());
            metaObject.setValue("updateTime", LocalDateTime.now());
        }
        // 更新数据自动填充
        @Override
        public void updateFill(MetaObject metaObject) {
            metaObject.setValue("updateTime", LocalDateTime.now());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    以后数据库每一次变更(加了 @TableField 注解的)都会经过 insertFill/updateFill 。

    5. 设置表名映射

    1. 单独设置

      实体类上加 @TableName("tb_user") 来指定表名:

      @Data
      @TableName("tb_user")
      public class User {
          private int id;
          private String  name;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    2. 全局配置

      配置文件中加上通用前缀 :

      mybatis-plus:
       global-config:
        db-config:
         # 表名前缀
         table-prefix: tb_
      
      • 1
      • 2
      • 3
      • 4
      • 5

    6. 设置字段映射

    指定Java实体类的变量对应数据库哪一个字段。

    @TableField 注解的value属性,默认就是value属性,可以不写

    @Data
    public class User {
        // @TableField(value = "userId")
        @TableField("userId")
        private int id;
        
        private String  name;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    7. 字段名和列名的驼峰映射

    数据库中的字段名 :user_name

    实体类中的变量名 :userName

    mp默认开启驼峰映射,如果需要关闭 :

    mybatis-plus:
     configuration:
      # 关闭驼峰映射
      map-underscore-to-case: false
    
    • 1
    • 2
    • 3
    • 4

    8. 设置主键生成策略

    默认情况下主键的生成策略使用mp提供的雪花算法生成的自增id。

    1. 单独设置

      如果需要使用别的策略,在字段上加 @TableId ,它通过type属性指定主键生成策略,type的值为枚举类。最后两个策略只有当插入对象的主键位为时才会自动填充。

    属性值作用
    IdType.NONE默认,未设置逐渐策略,使用全局策略,默认全局为雪花算法
    IdType.AUTO使用数据库的自动增长策略,每次加一
    IdType.INPUT需要手动设置主键
    IdType…ASSIGN_UUID使用UUID生成随机主键
    IdType.ASSIGN_IDmp自带策略,数字类型使用(19位)
    1. 全局配置

      在配置文件中:

    mybatis-plus:
     global-config:
      db-config:
       # mp主键生成策略
       id-type: auto/none/input/assign_id/assign_uuid
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    树莓派4B_OpenCv学习笔记19:OpenCV舵机云台物体追踪
    C规范编辑笔记(一)
    Windows快速安装pandora-chatgpt
    java-net-php-python-jspm家教信息管理系统演示录像(1)计算机毕业设计程序
    如何优雅的处理编码与文本之间转换工作?
    elasticsearch设置密码
    CSS3------CSS大结局
    Excel 宏录制与VBA编程 ——VBA编程技巧篇一 (Union方法、Resize方法、Cells方法、UseSelect方法、With用法)
    力扣1047-删除字符串中的所有相邻重复项)——栈
    Science子刊 | 将CAR-T细胞疗法与造血干细胞移植相结合 或许 能治疗所有血液癌症...
  • 原文地址:https://blog.csdn.net/qq_62939743/article/details/126670760