MyBatis-Plus 欄位自動注入
阿新 • • 發佈:2021-06-25
Application.yml 配置
mybatis-plus: configuration: call-setters-on-nulls: true #設定當查詢結果值為null時,同樣對映該查詢欄位給map。 map-underscore-to-camel-case: false # 資料庫下劃線自動轉駝峰標示關閉 auto-mapping-behavior: full # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath*:/mapper/*Mapper.xml,classpath*:/mapper/custom/*.xml global-config: # 邏輯刪除配置 db-config: # 邏輯刪除欄位 logic-delete-field: deleted # 刪除前 logic-not-delete-value: 0 # 刪除後 logic-delete-value: 1
模型
/** * 是否刪除 0:正常 1:已刪除 */ @TableField(value = "deleted") private Byte deleted; /** * 建立使用者 */ @TableField(value = "create_by", fill = FieldFill.INSERT) private Long createBy; /** * 更新使用者 */ @TableField(value = "update_by", fill = FieldFill.UPDATE) private Long updateBy; /** * 建立時間 */ @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; /** * 更新時間 */ @TableField(value = "update_time", fill = FieldFill.UPDATE) private Date updateTime;
新建配置自動填充檔案 MyMetaObjectHandler
package com.zyy.config; import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.zyy.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component; /** * @author zhouhao * @version 1.0 * @description: 自動填充功能 * @date 2021/4/28 15:00 */ @Slf4j @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { // 建立時間和更新時間都插入 Object created = getFieldValByName("createTime", metaObject); if (null == created) { // 欄位為空,可以進行填充 setFieldValByName("createTime", DateTime.now(), metaObject); } Object updated = getFieldValByName("updateTime", metaObject); if (null == updated) { // 欄位為空,可以進行填充 setFieldValByName("updateTime", DateTime.now(), metaObject); } this.setFieldValByName("createBy",SecurityUtils.getCurrentUserId(), metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime", DateTime.now(), metaObject); this.setFieldValByName("updateBy",SecurityUtils.getCurrentUserId(), metaObject); } }