Mybatis-Plus 插件学习
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
1.逻辑删除
在相应字段上添加注解
@TableLogic private Integer deleted;
说明:
使用mp自带方法删除和查找都会附带逻辑删除功能 (自己写的xml不会)
example 删除时 update user set deleted=1 where id =1 and deleted=0 查找时 select * from user where deleted=0
2.通用枚举类
比如一些状态属性
① 声明枚举
定义枚举
public enum AgeEnum implements IEnum<Integer> { ONE(1, "一岁"), TWO(2, "二岁"), THREE(3, "三岁"); private int value; private String desc; @Override public Integer getValue() { return this.value; } }
使用枚举
public class User{ /** * 名字 * 数据库字段: name varchar(20) */ private String name; /** * 年龄,IEnum接口的枚举处理 * 数据库字段:age INT(3) */ private AgeEnum age; /** * 年级,原生枚举(带{@link com.baomidou.mybatisplus.annotation.EnumValue}): * 数据库字段:grade INT(2) */ private GradeEnum grade; }
②配置扫描枚举
mybatis-plus: # 支持统配符 * 或者 ; 分割 typeEnumsPackage: com.baomidou.springboot.entity.enums ....
3.自动填充功能
自动填充,意味着就是设置默认值,不依赖数据库设置默认值,依赖程序实现。
定义填充方法
@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); this.setFieldValByName("deleteFlag", 0, metaObject); } @Override public void updateFill(MetaObject metaObject) { LOGGER.info("start update fill ...."); this.setFieldValByName("updateTime", new Date(),metaObject); } }
使用填充
public class User { /** * 创建时间 */ @TableField(fill = FieldFill.INSERT) private Date createTime; /** * 修改时间 */ @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; /** * 逻辑删除 */ @TableField(fill = FieldFill.INSERT) @TableLogic private Integer deleteFlag; .... }
fill 属性 可选值
public enum FieldFill { /** * 默认不处理 */ DEFAULT, /** * 插入填充字段 */ INSERT, /** * 更新填充字段 */ UPDATE, /** * 插入和更新填充字段 */ INSERT_UPDATE }
4.sql 注入(拦截)功能
对 sql 进行改写,参考
DefaultSqlInjector
5.分页插件
//Spring boot方式 @EnableTransactionManagement @Configuration @MapperScan("com.baomidou.cloud.service.*.mapper*") public class MybatisPlusConfig { /** * 分页插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
233

更多精彩