一、公共实体java
对于User类中有而user表中没有的属性须要加第二个注解@TableField(exist = false),表示排除User类中的属性spring
全部新增公共字段加注解 并指定
@TableField(value = "corp_code",fill = FieldFill.INSERT)
fill = FieldFill.INSERT
全部更新的字段sql
@TableField(value = "last_modify_time",fill = FieldFill.UPDATE)
即更新有新增的加数据库
@TableField(value = "last_modify_time",fill = FieldFill.INSERT_UPDATE)
express
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公共字典新增和修改的逻辑apache
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);
}
}
性能优化
三、修改mybatis-plus配置 添加一下代码mybatis
@Bean
public MetaObjectHandler metaObjectHandler(){
return new MyMetaObjectHandler();
}
app
总体配置以下ide
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();
}
}
五、application.properties中mybatis-plus的配置
#mybatis mybatis-plus.mapper-locations=classpath:/mapper/**/*.xml #实体扫描,多个package用逗号或者分号分隔 mybatis-plus.typeAliasesPackage=com.ps.uzkefu.apps.**.entity #主键类型 0:"数据库ID自增", 1:"用户输入ID",2:"全局惟一ID (数字类型惟一ID)", 3:"全局惟一ID UUID"; mybatis-plus.global-config.id-type=3 #驼峰下划线转换 mybatis-plus.global-config.db-column-underline=true #逻辑删除配置 mybatis-plus.global-config.sql-injector=com.baomidou.mybatisplus.mapper.LogicSqlInjector #配置逻辑删除字段为1是删除 mybatis-plus.global-config.logic-delete-value=1 #配置逻辑删除字段为0是未删除 mybatis-plus.global-config.logic-not-delete-value=0 --------------------- 做者:zsj777 来源:CSDN 原文:https://blog.csdn.net/zsj777/article/details/80783488 版权声明:本文为博主原创文章,转载请附上博文连接!