1.字段填充

具体实体

/**
 * <p>
 * 
 * </p>
 *
 * @author admin
 * @since 2021-01-21
 */
@Data
@Accessors(chain = true)
@TableName("t_travel_diary")
public class TravelDiary extends Model<TravelDiary> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 日记标题
     */
    private String title;

    /**
     * 日记内容
     */
    private String content;

    /**
     * 收藏数量
     */
    private Integer favoriteNum;

    /**
     * 点赞数
     */
    private Integer likeNum;

    /**
     * 评论数
     */
    private Integer commentNum;

    /**
     * 状态:0不可用,1可用,2草稿箱
     */
    private Integer status;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;



    @Override
    protected Serializable pkVal() {
        return this.id;
    }


}

填充器

/**
 * mybatis-plus 填充器
 */
@Slf4j
@Configuration
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        // 或者
        this.setFieldValByName( "createTime",LocalDateTime.now(), metaObject); // 起始版本 3.3.3(推荐)
        this.setFieldValByName( "updateTime",LocalDateTime.now(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
    }


}

2. Mybatis配置

/**
 * mybatis配置
 *
 */
@Configuration
public class MybatisConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 自动分页
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        // 防止全表更新与删除
        interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
        return interceptor;
    }

    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}

3. 常用控制台日志打印

mybatis-plus:
  configuration:
    # 打印执行 sql
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

4. 常用配置

mybatis-plus:
  mapper-locations: classpath*:/mapper/**Mapper.xml
  #实体扫描,多个package用逗号或者分号分隔
  typeAliasesPackage: com.duox.entity
  typeEnumsPackage: com.duox.enums
  global-config:
    # 数据库相关配置
    db-config:
      #主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID",ASSIGN_ID:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: ASSIGN_ID
      #数据库大写下划线转换
      capital-mode: true
      #逻辑删除配置
      logic-delete-value: 1
      logic-not-delete-value: 0
      insert-strategy: not_null
      update-strategy: not_null
      select-strategy: not_null