mybatis-plus具体应用

编写代码

1、实体

  • @TableId主键策略
  • @TableFieldt添加注解,自动填充/更新
  • @TableLogic逻辑删除
  • @Version版本号
@Data
public class User {
     
	//设置主键策略
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    private String name;
    private Integer age;
    private String email;
	//自动填充
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;
	//自动更新
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;

	//版本号
    @Version
    @TableField(fill = FieldFill.INSERT)
    private Integer version;

    //逻辑删除
    @TableLogic
    @TableField(fill = FieldFill.INSERT)
    private Integer deleted;
}

2.Mapper

@Repository
public interface UserMapper extends BaseMapper<User> {
     

}

3.自动填充

实现元对象处理器接口

注意:不要忘记添加 @Component 注解
实现MetaObjectHandler 接口

@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
     

    private static final Logger LOGGER = LoggerFactory.getLogger(MyMetaObjectHandler.class);

    @Override
    public void insertFill(MetaObject metaObject) {
     
        LOGGER.info("start insert fill ....");
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
     
        LOGGER.info("start update fill ....");
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

4.乐观锁

(1)数据库中添加version字段

(2)实体类添加version字段

@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;

(3)元对象处理器接口添加version的insert默认值

元对象处理器接口添加deleted的insert默认值

@Override
public void insertFill(MetaObject metaObject) {
     
    ......
    this.setFieldValByName("version", 1, metaObject);
    this.setFieldValByName("deleted", 0, metaObject);
}

5. MybatisPlusConfig 中注册 Bean

创建配置类
需要
@Configuration
@MapperScan(“com.shennan.mybatis_plus.mapper”)注解
包括
mybatis-plus各种插件

需要
@Bean

  • 乐观锁插件
  • 分页插件
  • 逻辑删除
  • SQL 执行性能分析插件
@EnableTransactionManagement
@Configuration
@MapperScan("com.shennan.mybatis_plus.mapper")
public class MybatisPlusConfig {
     

    /**
     * 乐观锁插件
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
     
        return new OptimisticLockerInterceptor();
    }
}

你可能感兴趣的:(mybatis-plus具体应用)