JobPlus知识库 IT DBA 文章
mybatis-plus公共字段操作

1、公共实体

对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false),表示排除User类中的属性


[java] 

  1. 所有新增公共字段加注解  并指定  

[java] 

  1. @TableField(value = "corp_code",fill = FieldFill.INSERT)  

[java]

  1. fill = FieldFill.INSERT  

所有更新的字段


@TableField(value = "last_modify_time",fill = FieldFill.UPDATE)即更新有新增的加@TableField(value = "last_modify_time",fill = FieldFill.INSERT_UPDATE)


[java] 

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

@Setterpublic 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公共字典新增和修改的逻辑


[java]

  1. package com.ps.uzkefu.common;  
  2.   
  3. /** 
  4.  * Author:ZhuShangJin 
  5.  * Date:2018/6/19 
  6.  */  
  7. import com.baomidou.mybatisplus.mapper.MetaObjectHandler;  
  8. import com.ps.uzkefu.UzkefuApplication;  
  9. import org.apache.ibatis.reflection.MetaObject;  
  10. import org.slf4j.Logger;  
  11. import org.slf4j.LoggerFactory;  
  12.   
  13. import java.sql.Timestamp;  
  14.   
  15. /** 
  16.  *  注入公共字段自动填充,任选注入方式即可 
  17.  */  
  18. public class MyMetaObjectHandler extends MetaObjectHandler {  
  19.   
  20.     protected final static Logger logger = LoggerFactory.getLogger(UzkefuApplication.class);  
  21.   
  22.     @Override  
  23.     public void insertFill(MetaObject metaObject) {  
  24.         logger.info("新增的时候干点不可描述的事情");  
  25.         // 更多查看源码测试用例  
  26.         System.out.println("*************************");  
  27.         System.out.println("insert fill");  
  28.         System.out.println("*************************");  
  29.   
  30.         // 测试下划线  
  31.         Object testType = getFieldValByName("corpCode", metaObject);//mybatis-plus版本2.0.9+  
  32.         System.out.println("corpCode=" + testType);  
  33.         if (testType == null) {  
  34.             setFieldValByName("corpCode", "99999", metaObject);//mybatis-plus版本2.0.9+  
  35.         }  
  36.     }  
  37.   
  38.     @Override  
  39.     public void updateFill(MetaObject metaObject) {  
  40.         logger.info("更新的时候干点不可描述的事情");  
  41.         //更新填充  
  42.         System.out.println("*************************");  
  43.         System.out.println("update fill");  
  44.         System.out.println("*************************");  
  45.         //mybatis-plus版本2.0.9+  
  46.         setFieldValByName("lastModifyTime", new Timestamp(System.currentTimeMillis()), metaObject);  
  47.     }  
  48. }  


3、修改mybatis-plus配置 添加一下代码


@Beanpublic 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();

    }

 }


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
392人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序