MyBatis-plus如何实现字段类型处理器、自动填充和乐观锁等功能的详细教程?

摘要:MyBatis-plus拓展 逻辑删除 逻辑删除就是增加一个字段表示这个数据的状态,通过状态来显示数据或隐藏数据,而不是真正的删除。 MyBatis-plus使用@TableLogic注解来标注逻辑删除字段: public class Us
MyBatis-plus拓展 逻辑删除 逻辑删除就是增加一个字段表示这个数据的状态,通过状态来显示数据或隐藏数据,而不是真正的删除。 MyBatis-plus使用@TableLogic注解来标注逻辑删除字段: public class User extends Model<User> { @TableId private Long id; private String name; private Integer age; private String email; // 配置当前字段为逻辑删除字段 // 默认值是1,删除状态的值是0 @TableLogic(value = "1",delval = "0") private Integer status; } 此时如果调用Mapper的删除方法,实际对应的sql语句是更新操作。将逻辑删除字段的值更新为0,而不是真正的删除。 而且此时Mapper的查询方法,不会查出这条数据。生成的sql语句会自动拼接where条件:status = 1 逻辑删除也可以在配置文件中进行全局配置: mybatis-plus: global-config: banner: false db-config: id-type: assign_id # 逻辑删除字段为status logic-delete-field: status # 删除状态的值 logic-delete-value: 0 # 未删除状态的值 logic-not-delete-value: 1 使用全局配置后就不用使用@TableLogic注解了。 通用枚举 假如要表示性别:只有男和女两个值,我们就可以使用枚举来描述。 数据库表中使用gender (int 类型)表示性别,0表示女性,1表示男性。 使用@EnumValue来标注将哪个变量的值插入到数据库。 先创建枚举类 public enum GenderEnum { MAN(1,"男"),WOMAN(0,"女"); @EnumValue // 表示将这个变量的值插入到数据库 private Integer gender; private String genderName; GenderEnum(Integer gender, String genderName) { this.gender = gender; this.genderName = genderName; } } 给Pojo类添加枚举属性 public class User extends Model<User> { @TableId private Long id; private String name; private Integer age; private String email; // 配置当前字段为逻辑删除字段 // 默认值是1,删除状态的值是0 @TableLogic(value = "1",delval = "0") private Integer status; private GenderEnum gender; } 调用正常的插入方法即可实现。 字段类型处理器 某些场景下,实体类中使用map集合作为属性接收前端传来的数据,但是把这些输出存到数据库时,使用json格式的字符串存储。那怎么把map类型转换成字符串类型呢?这里就需要使用字段类型处理器。 需要@TableName注解和@TableField注解配合使用。
阅读全文