mybatis plus配置自动create_time和update_time方式
目录
- myBATis plus配置自动create_time和update_time
- 注意时间类型的转化
- 总结
mybatis plus配置自动create_time和update_time
注意时间类型的转化
package com.ruoyi.framework.handler; import com.baomidou.mybatisphttp://www.devze.comlus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; import Java.time.LocalDateTime; import java.time.ZoneId; import java.util.Date; /** * 自定义元对象处理器,用于在数据库操作中自动填充创建时间和更新时间。 * @Component 注解表示该类是一个Spring Bean,可以被其他Bean依赖注入。 */ @Component public class MyMetaObjectHandler implements MetaObjectHandler { /** * 在插入数据时自动填充创建时间和更新时间。 * @param metaObject 元对象,代表待插入的数据对象。 * 使用反射机制,通过字段名设置字段值,实现创建时间和更新时间的自动填充。 */ @Override public void insertFill(MetaObject metaObject) { Date now = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()); this.setFieldValByName("createTime", now, metaObject); this.setFieldValByName("updateTime", now, metaObject); } /** * 在更新数据时自动填充更新时间。 * @param metaObject 元对象,代表待更新的数据对象。 * 使用反射机制,通过字段名设置字段值,实现更新时间的自动填充。 */ @Override public void updateFill(MetaObject metaObject) { Date now = Date.from(LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant()); this.setFieldValByName("updateTime", now, metaObject); } }
package com.ruoyi.common.core.domain; import java.io.Serializable; import java.util.Date; import java.util.HashMap; import java.util.Map; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterXML.jackson.annotation.jsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; /** * Entity基类 * * @author ruoyi */ public class BaseEntity implements Serializable { python private static final long serialVersionUID = 1L; /** 搜索值 */ @JsonIgnore @TableField(exist=false) private String searchValue; /** 创建者 */ private String createBy; /** 创建时间 TableField自动维护*/ @TableField(fill = FieldFill.INSERT) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** 更新者 */ private String updateBy; /** 更新时间 TableField自动维护*/ @TableField(fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** 备注 */ private String remark; /** 请求参数 */ @JsonInclude(JsonInclude.Include.NON_EMPTY) @TableField(exist=false) private Map<String, Object> params; public String getSearchValue() { return searchValue; } public void setSearchValue(String searchValue) { this.searchValue = searchValue; } public String getCreateBy() { return createBy; } public void setCreateBy(String createBy) { this.createBy = createBy; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTiwww.devze.comme) { this.createTime = createTime; } public String getUpdateBy() { return updateBy; } public void setUpdateBy(String updateBy) { this.updateBy = updateBy; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } public Map<String, Object> getParams() { if (params == null) { params = new HashMap<>(); } return params; } public void setParams(Map<String, Object> params) { this.params = params; } }
package com.ruoyi.framework.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomido编程客栈u.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.blockAttackInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframe编程work.transaction.annotation.EnableTransactionManagement; /** * Mybatis Plus 配置 * * @author ruoyi */ @EnableTransactionManagement(proxyTargetClass = true) @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); // 分页插件 interceptor.addInnerInterceptor(paginationInnerInterceptor()); // 乐观锁插件 interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor()); // 阻断插件 interceptor.addInnerInterceptor(blockAttackInnerInterceptor()); return interceptor; } /** * 分页插件,自动识别数据库类型 https://baomidou.com/guide/interceptor-pagination.html */ public PaginationInnerInterceptor paginationInnerInterceptor() { PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(); // 设置数据库类型为mysql paginationInnerInterceptor.setDbType(DbType.MYSQL); // 设置最大单页限制数量,默认 500 条,-1 不受限制 paginationInnerInterceptor.setMaxLimit(-1L); return paginationInnerInterceptor; } /** * 乐观锁插件 https://baomidou.com/guide/interceptor-optimistic-locker.html */ public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor() { return new OptimisticLockerInnerInterceptor(); } /** * 如果是对全表的删除或更新操作,就会终止该操作 https://baomidou.com/guide/interceptor-block-attack.html */ public BlockAttackInnerInterceptor blockAttackInnerInterceptor() { return new BlockAttackInnerInterceptor(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。
精彩评论