MybatisPlus常用设置

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

1. 开启日志

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

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

2. 设置Mapper文件扫描位置

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

3. 设置逻辑删除字段

  1. 单独设置

    逻辑删除字段上加 @TableLogic

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

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

4. 设置自动填充字段

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

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

1. 默认不做处理:
# DEFAULT

2. 插入时填充字段:
# INSERT

3. 更新时填充字段:
# UPDATE

4. 插入和更新时都填充字段:
# INSERT_UPDATE
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;

第二步:填充什么 ?

实现 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());
    }
}

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

5. 设置表名映射

  1. 单独设置

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

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

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

    mybatis-plus:
     global-config:
      db-config:
       # 表名前缀
       table-prefix: tb_
    

6. 设置字段映射

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

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

@Data
public class User {
    
    
    // @TableField(value = "userId")
    @TableField("userId")
    private int id;
    
    private String  name;
}

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

数据库中的字段名 :user_name

实体类中的变量名 :userName

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

mybatis-plus:
 configuration:
  # 关闭驼峰映射
  map-underscore-to-case: false

8. 设置主键生成策略

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

  1. 单独设置

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

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

    在配置文件中:

mybatis-plus:
 global-config:
  db-config:
   # mp主键生成策略
   id-type: auto/none/input/assign_id/assign_uuid

猜你喜欢

转载自blog.csdn.net/qq_62939743/article/details/126670760