1、公共实体
对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性
所有新增公共字段加注解 并指定
@TableField(value = "corp_code",fill = FieldFill.INSERT)
fill = FieldFill.INSERT
所有更新的字段
@TableField(value = "last_modify_time",fill = FieldFill.UPDATE)即更新有新增的加
@TableField(value = "last_modify_time",fill = FieldFill.INSERT_UPDATE)
package com.ps.uzkefu.base; import com.baomidou.mybatisplus.activerecord.Model; import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.enums.FieldFill; import lombok.Getter; import lombok.Setter; import java.io.Serializable; import java.util.Date; @Getter @Setter public abstract class BaseEntity<T extends Model> extends Model<T> implements Serializable { private static final long serialVersionUID = 1L; protected String id ; /* * 租户编码 */ @TableField(value = "corp_code",fill = FieldFill.INSERT) protected String corpCode; protected Integer isDel = 0; //0:正常 1:删除 /* * 创建人 */ protected String creater; /* * 创建时间 */ protected Date createTime; /* * 最后修改时间 */ @TableField(value = "last_modify_time",fill = FieldFill.UPDATE) protected Date lastModifyTime; /* * 最后修改人 */ protected String lastModify; @Override protected Serializable pkVal() { return this.id; } }
2公共字典新增和修改的逻辑
package com.ps.uzkefu.common; /** * Author:ZhuShangJin * Date:2018/6/19 */ import com.baomidou.mybatisplus.mapper.MetaObjectHandler; import com.ps.uzkefu.UzkefuApplication; import org.apache.ibatis.reflection.MetaObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.sql.Timestamp; /** * 注入公共字段自动填充,任选注入方式即可 */ public class MyMetaObjectHandler extends MetaObjectHandler { protected final static Logger logger = LoggerFactory.getLogger(UzkefuApplication.class); @Override public void insertFill(MetaObject metaObject) { logger.info("新增的时候干点不可描述的事情"); // 更多查看源码测试用例 System.out.println("*************************"); System.out.println("insert fill"); System.out.println("*************************"); // 测试下划线 Object testType = getFieldValByName("corpCode", metaObject);//mybatis-plus版本2.0.9+ System.out.println("corpCode=" + testType); if (testType == null) { setFieldValByName("corpCode", "99999", metaObject);//mybatis-plus版本2.0.9+ } } @Override public void updateFill(MetaObject metaObject) { logger.info("更新的时候干点不可描述的事情"); //更新填充 System.out.println("*************************"); System.out.println("update fill"); System.out.println("*************************"); //mybatis-plus版本2.0.9+ setFieldValByName("lastModifyTime", new Timestamp(System.currentTimeMillis()), metaObject); } }
3、修改mybatis-plus配置 添加一下代码
@Bean public MetaObjectHandler metaObjectHandler(){ return new MyMetaObjectHandler(); }
整体配置如下
package com.ps.uzkefu.common; /** * Author:ZhuShangJin * Date:2018/6/19 */ import java.util.ArrayList; import java.util.List; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.baomidou.mybatisplus.incrementer.H2KeyGenerator; import com.baomidou.mybatisplus.incrementer.IKeyGenerator; import com.baomidou.mybatisplus.mapper.ISqlInjector; import com.baomidou.mybatisplus.mapper.LogicSqlInjector; import com.baomidou.mybatisplus.mapper.MetaObjectHandler; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import com.baomidou.mybatisplus.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.plugins.PerformanceInterceptor; import com.baomidou.mybatisplus.plugins.parser.ISqlParser; import com.baomidou.mybatisplus.plugins.parser.tenant.TenantHandler; import com.baomidou.mybatisplus.plugins.parser.tenant.TenantSqlParser; import net.sf.jsqlparser.expression.Expression; import net.sf.jsqlparser.expression.LongValue; import javax.sql.DataSource; @Configuration @MapperScan("com.ps.uzkefu.apps.**.mapper*") public class MybatisPlusConfig { /*** * SQL执行效率插件【生产环境可以关闭】 * plus 的性能优化 * @return */ @Bean public PerformanceInterceptor performanceInterceptor() { PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); /*<!-- SQL 执行性能分析,开发环境使用,线上不推荐。 maxTime 指的是 sql 最大执行时长 -->*/ performanceInterceptor.setMaxTime(1000); /*<!--SQL是否格式化 默认false-->*/ performanceInterceptor.setFormat(true); return performanceInterceptor; } /** * mybatis-plus分页插件<br> * 文档:http://mp.baomidou.com<br> */ @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); paginationInterceptor.setLocalPage(true);// 开启 PageHelper 的支持 return paginationInterceptor; } @Bean public MetaObjectHandler metaObjectHandler(){ return new MyMetaObjectHandler(); } /** * 注入sql注入器 */ @Bean public ISqlInjector sqlInjector(){ return new LogicSqlInjector(); } }