MyBatis | 您所在的位置:网站首页 › 填充功能可以实现什么操作呢 › MyBatis |
本文基于 SpringBoot 在项目开发过程中,我们的数据库表中,经常不可避免的会出现一些公共字段,比如创建人信息、创建时间、修改人信息、修改时间等等相关信息,我们一般都是拿到当前操作人员 set 相关属性进行写入,或者利用 aop 、反射等相关技术进行处理,当我们使用了 MyBatis-Plus 之后,这一切就变得简单起来了 一、引入 MyBatis-Plus 1、引入相关依赖 org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.projectlombok lombok true mysql mysql-connector-java 6.0.6 com.baomidou mybatis-plus-boot-starter 3.1.0 com.baomidou mybatis-plus-generator 3.1.0 2、SpringBoot 配置文件数据库相关连接信息按自己的进行配置 mybatis-plus: #扫描所有xml mapper-locations: classpath:mapper/*.xml #扫描实体类 type-aliases-package: com.wxw.springboot_mybatisplus.MetaObject.entity #打印日志 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 二、准备相关实体类代码 1、基础实体类父类 @Data public class BaseEntity implements Serializable { /** * id */ @TableId(value = "id", type = IdType.AUTO) private String id; /** * 创建人 */ @TableField(value = "create_user_id", fill = FieldFill.INSERT) private String createUserId; /** * 创建人 */ @TableField(value = "create_user_code", fill = FieldFill.INSERT) private String createUserCode; /** * 创建时间 */ @TableField(value = "create_date", fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createDate; /** * 更新人 */ @TableField(value = "update_user_id", fill = FieldFill.UPDATE) private String updateUserId; /** * 更新人 */ @TableField(value = "update_user_code", fill = FieldFill.UPDATE) private String updateUserCode; /** * 更新时间 */ @TableField(value = "update_date", fill = FieldFill.UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateDate; /** * 是否删除 */ @TableField(value = "delete_flag", fill = FieldFill.INSERT) @TableLogic private String deleteFlag; }在需要自动填充的字段上增加注解 @TableField(value = “delete_flag”, fill = FieldFill.INSERT) @TableField(value = “update_date”, fill = FieldFill.UPDATE) value 是对应的字段名称 fill = FieldFill.INSERT 表示插入的时候进行操作 我们可以看 FieldFill 的源码,有如下几种选项 INSERT 表示插入的时候进行填充 UPDATE 表示修改的时候进行填充 INSERT_UPDATE 表示插入和修改的时候都进行填充 类上增加注解 @Component 表示 此类加入 Spring 的管理,如果不加此注解,也可以通过注入 bean 的形式进行注入 当我们实现元对象处理器接口之后,我们可以重写接口中的两个方法 insertFill 和 updateFill 分别对插入时需要填充的公共字段 和 修改时需要填充的公共字段做处理,我这里只是简单的填充一些测试数据,可以按照自己的实际情况惊醒填充,比如拿到 security 中的用户进行填充或者拿到 session 中的用户进行填充等等,都可以 注意: 1、setFieldValByName 方法中,例如 UPDATE_DATE 等字段,必须使用驼峰转换之后的字段名,比如 update_date , 这里就是 updateDate,否则,在填充的时候不会报错,但是填充的数据就会一直是 null,所以这里的字段名必须要对应 2、需要填充的字段,必须要有 get 和 set 方法,否则也是会填充不进去的,我这里是在基础实体的父类中使用了 lombok 的 @data 注解来实现 get 和 set 3、如果填充的字段,一直都填充的是 null,请检查填充的字段和数据库字段是否没有对应上 三、测试自动填充 1、写两个接口测试插入以及修改测试插入 测试修改 关注公众号查看更多资源 |
CopyRight 2018-2019 实验室设备网 版权所有 |