mybatis-plus公共字段操作以及springboot2整合mybatis-plus

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();
    }
 
 
 
 
}
 

5、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 
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://my.oschina.net/glenxu/blog/2251230

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值