mybaitis-plus 持久层高效开发, 懒人神器

mybaitis-plus 持久层高效开发, 懒人神器

  • 引入mybatis-plus的jar包
  • 添加mybatis-plus配置
  • 添加mybatis-plus扩展功能
    • 1. 公共字段自动填充
      • a. 配置填充功能
      • b. 设置需要填充的字段
    • 2. 开启插件功能

mybatis-plus 可以非常方便快捷的帮我们处理数据数据库持久层的相关逻辑(单表查询基本都不用写sql和映射了), 提高开发效率

前提: 需要配合mybatis

引入mybatis-plus的jar包

首先需要在pom.xml中加入mybatis-plus的包

<dependency>
    <groupId>com.baomidougroupId>
    <artifactId>mybatis-plus-boot-starterartifactId>
    <version>3.0.6version>
dependency>

添加mybatis-plus配置

在配置文件中加入mybatis-plus的扫描配置

mybatis-plus.mapper-locations=classpath:/mapper/msql/*.xml
mybatis-plus.type-aliases-package=com.wang.mapper.mysql

添加mybatis-plus扩展功能

1. 公共字段自动填充

a. 配置填充功能


package com.wang.cloud.store.common.conf.mybatisplus;


import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;

import java.util.Date;

/**
 * 配置公共字段自动填充功能  @TableField(..fill = FieldFill.INSERT)
 *
 */

@Component
public class MetaObjectHandlerConfig implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {

        Object createTime = getFieldValByName("createTime", metaObject);
        Object updateTime = getFieldValByName("updateTime", metaObject);
        if (createTime == null)
            setFieldValByName("createTime",new Date(), metaObject);//mybatis-plus版本2.0.9+
        if (updateTime == null)
            setFieldValByName("updateTime",new Date(), metaObject);//mybatis-plus版本2.0.9+
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        Object updateTime = getFieldValByName("updateTime", metaObject);
        if (updateTime == null) {
            setFieldValByName("updateTime", new Date(), metaObject);//mybatis-plus版本2.0.9+
        }
    }
}


b. 设置需要填充的字段

在字段上加上注解, 如下:

@TableField(fill = FieldFill.INSERT)
private Date createTime;

@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

2. 开启插件功能

package com.wang.cloud.store.common.conf.mybatisplus;

import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;


@Configuration
@MapperScan("com.wang.cloud.store.mapper")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
public class MybatisPlusConfig {


    /**
     * 分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }


    /**
     * sql注入器  逻辑删除插件
     * @return
     */
    @Bean
    public ISqlInjector iSqlInjector(){
        return new LogicSqlInjector();
    }


    /**
     * sql性能分析插件,输出sql语句及所需时间
     * @return
     */
    @Bean
    @Profile({"dev","test"})// 设置 dev test 环境开启
    public PerformanceInterceptor performanceInterceptor() {
        return new PerformanceInterceptor();
    }

    /**
     * 乐观锁插件
     * @return
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }


}

你可能感兴趣的:(java,工具优化)