在搭建的后端應(yīng)用中,我們使用了 mybatis-plus 框架作為擴(kuò)展,減少 sql 的書(shū)寫(xiě),提升開(kāi)發(fā)效率,其中有個(gè)功能很好用,就是自動(dòng)填充。在項(xiàng)目中,我們的后臺(tái)表一般會(huì)具有一些標(biāo)準(zhǔn)字段,作為強(qiáng)制建表規(guī)范,比如:
- create_by 創(chuàng)建者
- creation_date 創(chuàng)建時(shí)間
- last_updated_by 最后更新者
- last_update_date 最后更新時(shí)間
這些字段我們會(huì)放到 Entity類中,作為其他 Entity的超類,這樣就不用重復(fù)定義了,但是有個(gè)問(wèn)題,在每次修改數(shù)據(jù)時(shí),都需要給這幾個(gè)字段賦值,這顯然就有點(diǎn)繁瑣了,如果能系統(tǒng)自動(dòng)讀取相關(guān)值并填充就能省略很多代碼,mybatis plus 的自動(dòng)填充正是一個(gè)這樣的功能。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-589444.html
創(chuàng)建這個(gè)Entity基類
package com.hjycommunity.common.core.domain;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
/**
* Entity 基類
**/
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 搜索值
* @TableField(exist = false)注解加載bean屬性上,表示當(dāng)前屬性不是數(shù)據(jù)庫(kù)的字段,
* 但在項(xiàng)目中必須使用,這樣在新增等使用bean的時(shí)候,mybatis-plus就會(huì)忽略這個(gè),不會(huì)報(bào)錯(cuò)
*/
@TableField(exist = false)
private String searchValue;
/**
* 創(chuàng)建者
* fill 在需要被填充的字段上使用注解,聲明什么時(shí)候要被填充
* FieldFill.INSERT 只在插入時(shí)填充
* FieldFill.INSERT_UPDATE 插入和更新時(shí)都填充
*/
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 創(chuàng)建時(shí)間 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/** 更新者 */
@TableField(fill = FieldFill.INSERT)
private String updateBy;
/** 更新時(shí)間 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableField(fill = FieldFill.INSERT)
private Date updateTime;
/** 備注 */
private String remark;
/** 請(qǐng)求參數(shù) */
@TableField(exist = false)
private Map<String, Object> params;
//get/set ......
}
自定義填充控制器
- 前面我們說(shuō)到mybatis plus的自動(dòng)填充功能,除了要在字段上添加相關(guān)注解以外,自定義類還需要實(shí)現(xiàn)MetaObjectHandler接口,重寫(xiě)接口方法,實(shí)現(xiàn)公共字段自動(dòng)寫(xiě)入。
- 創(chuàng)建自定義填充控制器,包結(jié)構(gòu):
com.xxx.common.handler
/**
* 自定義填充控制器
* @author spikeCong
* @date 2023/2/28
**/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//insert時(shí)要填充的字段
@Override
public void insertFill(MetaObject metaObject) {
//根據(jù)屬性名稱設(shè)置要填充的值
this.strictInsertFill(metaObject,"createBy",String.class,"admin");
this.strictInsertFill(metaObject,"updateBy",String.class,"admin");
this.strictInsertFill(metaObject,"createTime", Date.class,new Date());
this.strictInsertFill(metaObject,"updateTime", Date.class,new Date());
}
//update操作時(shí)要填充的字段
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject,"updateBy",String.class,"admin");
this.strictUpdateFill(metaObject,"updateTime", Date.class,new Date());
}
}
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-589444.html
到了這里,關(guān)于【業(yè)務(wù)功能篇46】項(xiàng)目中的Entity基類 固定的相關(guān)創(chuàng)建人,創(chuàng)建時(shí)間字段..的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!