package com.sinata.appointment.config; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import java.time.LocalDateTime; import java.util.UUID; import org.apache.ibatis.reflection.MetaObject; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class MybatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor()); return interceptor; } @Bean public MetaObjectHandler metaObjectHandler() { return new MetaObjectHandler() { @Override public void insertFill(MetaObject metaObject) { LocalDateTime now = LocalDateTime.now(); strictInsertFill(metaObject, "createTime", LocalDateTime.class, now); strictInsertFill(metaObject, "updateTime", LocalDateTime.class, now); Object uuid = getFieldValByName("uuid", metaObject); if (uuid == null || (uuid instanceof String s && s.isBlank())) { setFieldValByName("uuid", UUID.randomUUID().toString().replace("-", ""), metaObject); } Object version = getFieldValByName("version", metaObject); if (version == null) { setFieldValByName("version", 1L, metaObject); } Object delFlag = getFieldValByName("delFlag", metaObject); if (delFlag == null) { setFieldValByName("delFlag", 0, metaObject); } } @Override public void updateFill(MetaObject metaObject) { strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); } }; } }