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();
}
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论