文章目录

  • 1. 开启日志
  • 2. 设置Mapper文件扫描位置
  • 3. 设置逻辑删除字段
  • 4. 设置自动填充字段
  • 5. 设置表名映射
  • 6. 设置字段映射
  • 7. 字段名和列名的驼峰映射
  • 8. 设置主键生成策略


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
}
  1. 全局设置
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;
}
  1. 全局配置
    配置文件中加上通用前缀 :
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