mybatis?plus配置自動(dòng)create_time和update_time方式
更新時(shí)間:2024年09月22日 10:25:44 作者:SuenDanny
在處理數(shù)據(jù)時(shí),注意時(shí)間類型的轉(zhuǎn)換非常重要,不同編程環(huán)境和數(shù)據(jù)庫(kù)對(duì)時(shí)間數(shù)據(jù)的處理方式各異,因此在數(shù)據(jù)遷移或日常處理中需謹(jǐn)慎處理時(shí)間格式,個(gè)人經(jīng)驗(yàn)表明,了解常用的時(shí)間轉(zhuǎn)換函數(shù)和方法能有效避免錯(cuò)誤,提高工作效率,希望這些經(jīng)驗(yàn)?zāi)転榇蠹規(guī)韼椭?/div>
mybatis plus配置自動(dòng)create_time和update_time
注意時(shí)間類型的轉(zhuǎn)化

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;
/**
* 自定義元對(duì)象處理器,用于在數(shù)據(jù)庫(kù)操作中自動(dòng)填充創(chuàng)建時(shí)間和更新時(shí)間。
* @Component 注解表示該類是一個(gè)Spring Bean,可以被其他Bean依賴注入。
*/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 在插入數(shù)據(jù)時(shí)自動(dòng)填充創(chuàng)建時(shí)間和更新時(shí)間。
* @param metaObject 元對(duì)象,代表待插入的數(shù)據(jù)對(duì)象。
* 使用反射機(jī)制,通過字段名設(shè)置字段值,實(shí)現(xiàn)創(chuàng)建時(shí)間和更新時(shí)間的自動(dòng)填充。
*/
@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);
}
/**
* 在更新數(shù)據(jù)時(shí)自動(dòng)填充更新時(shí)間。
* @param metaObject 元對(duì)象,代表待更新的數(shù)據(jù)對(duì)象。
* 使用反射機(jī)制,通過字段名設(shè)置字段值,實(shí)現(xiàn)更新時(shí)間的自動(dòng)填充。
*/
@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;
/** 創(chuàng)建者 */
private String createBy;
/** 創(chuàng)建時(shí)間 TableField自動(dòng)維護(hù)*/
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/** 更新者 */
private String updateBy;
/** 更新時(shí)間 TableField自動(dòng)維護(hù)*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/** 備注 */
private String remark;
/** 請(qǐng)求參數(shù) */
@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();
// 分頁(yè)插件
interceptor.addInnerInterceptor(paginationInnerInterceptor());
// 樂觀鎖插件
interceptor.addInnerInterceptor(optimisticLockerInnerInterceptor());
// 阻斷插件
interceptor.addInnerInterceptor(blockAttackInnerInterceptor());
return interceptor;
}
/**
* 分頁(yè)插件,自動(dòng)識(shí)別數(shù)據(jù)庫(kù)類型 https://baomidou.com/guide/interceptor-pagination.html
*/
public PaginationInnerInterceptor paginationInnerInterceptor()
{
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
// 設(shè)置數(shù)據(jù)庫(kù)類型為mysql
paginationInnerInterceptor.setDbType(DbType.MYSQL);
// 設(shè)置最大單頁(yè)限制數(shù)量,默認(rèn) 500 條,-1 不受限制
paginationInnerInterceptor.setMaxLimit(-1L);
return paginationInnerInterceptor;
}
/**
* 樂觀鎖插件 https://baomidou.com/guide/interceptor-optimistic-locker.html
*/
public OptimisticLockerInnerInterceptor optimisticLockerInnerInterceptor()
{
return new OptimisticLockerInnerInterceptor();
}
/**
* 如果是對(duì)全表的刪除或更新操作,就會(huì)終止該操作 https://baomidou.com/guide/interceptor-block-attack.html
*/
public BlockAttackInnerInterceptor blockAttackInnerInterceptor()
{
return new BlockAttackInnerInterceptor();
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot之自定義banner使用代碼實(shí)例
這篇文章主要介紹了SpringBoot之自定義banner使用代碼實(shí)例,在Spring Boot中,你可以通過定制Banner來個(gè)性化你的應(yīng)用程序啟動(dòng)時(shí)的輸出,Banner是一個(gè)在應(yīng)用程序啟動(dòng)時(shí)顯示的ASCII藝術(shù)字形式的標(biāo)志,用于增加應(yīng)用程序的識(shí)別度和個(gè)性化,需要的朋友可以參考下2024-01-01
詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別
今天小編就為大家分享一篇詳談springboot過濾器和攔截器的實(shí)現(xiàn)及區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08
PostMan如何傳參給@RequestBody(接受前端參數(shù))
這篇文章主要介紹了PostMan如何傳參給@RequestBody(接受前端參數(shù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

