mybatis-plus具体应用

本文详细介绍了Mybatis-Plus在实际应用中的区别点,包括自动填充实体属性、乐观锁的实现步骤,以及如何在配置文件中注册Bean。通过@TableId、@TableField和@TableLogic注解实现主键策略、逻辑删除和版本号功能,并通过实现MetaObjectHandler接口进行插入时的默认值设置。同时,讨论了乐观锁的数据库字段和实体类配置,以及在MybatisPlusConfig中注册乐观锁插件等其他插件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

区别点

mybatis-plus
service层也不需要写代码,已经帮助你继承了IService,ServiceImpl
都不需要自己手动写Service层的代码
也可以通过baseMapper调用相关语句,来实现对数据库的具体操作,见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();
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值