1、需要實(shí)現(xiàn)元對(duì)象字段填充控制器抽象類(lèi),如下代碼
package com.example.mybatisplus;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
/**
* mybatisplus字段填充器的實(shí)現(xiàn)
* 實(shí)現(xiàn)公共字段的自動(dòng)寫(xiě)入
*/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createdAt",LocalDateTime.now(),metaObject);
this.setFieldValByName("updatedAt",LocalDateTime.now(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updatedAt",LocalDateTime.now(),metaObject);
}
}
fieldName要注意對(duì)應(yīng)的生成的實(shí)體字段,不是數(shù)據(jù)庫(kù)對(duì)應(yīng)字段,否則無(wú)效
2、在生成的實(shí)體字段,@TableField增加fill填充,并寫(xiě)入填充的時(shí)機(jī)是新增還是修改
@TableField(value = "CREATED_AT",fill = FieldFill.INSERT)
private LocalDateTime createdAt;
@TableField(value = "UPDATED_AT", fill = FieldFill.INSERT_UPDATE )
private LocalDateTime updatedAt;
在此過(guò)程中可能會(huì)出現(xiàn)的錯(cuò):
修改或者插入的時(shí)候報(bào)類(lèi)型無(wú)效,java.sql.SQLException: 無(wú)效的列類(lèi)型: 1111
分析原因,可能是某個(gè)字段的值為null,要么就是字段填充器沒(méi)有設(shè)置默認(rèn)值,但是又在@TableField設(shè)置了自動(dòng)填充文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-798733.html
綜上,需要字段填充默認(rèn)值,就一定需要實(shí)現(xiàn)MetaObjectHandler類(lèi)中的方法文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-798733.html
到了這里,關(guān)于mybatisplus在新增或者修改時(shí)設(shè)置字段自動(dòng)填充的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!