mybatis plus配置自动create_time和update_time
注意时间类型的转化
package com.ruoyi.framework.handler; import com.baomidou.mybatisplus.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 { 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 createtime) { 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.baomidou.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.springframework.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(); } }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论