2020-12-20

mybatisPlus代码自动生成配置

package com.djz.mybatisplus;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;

import java.util.List;

@SpringBootTest
class MybatisplusApplicationTests {

    //mybatisplus自动生成代码构造器
    @Test
    public void testGenerator() {

        //构造 代码自动生成器对象
        AutoGenerator mpg = new AutoGenerator();
        //配置策略

        //1.全局配置
        //导入的是mybatisplus generator包下的
        GlobalConfig gc = new GlobalConfig();

        //当前项目路径
        String projectPath = System.getProperty("user.dir");

        gc.setOutputDir(projectPath + "/src/main/java")  //生成路径
                .setAuthor("djz")    //设置作者
                .setOpen(false)     //是否打开资源管理器
                .setFileOverride(false)  //是否覆盖原来生成的,文件覆盖
                // .setFileOverride(true)  //文件覆盖
                .setDateType(DateType.ONLY_DATE)
                .setSwagger2(true)    //配置swagger2
                .setIdType(IdType.AUTO)     //主键策略
                .setServiceName("%sService")    //设置生成的service接口的名字的首字母是否为I
                .setBaseResultMap(true)     //xml映射文件的配置
                .setBaseColumnList(true);   //xml映射文件的配置
        mpg.setGlobalConfig(gc);

        //2.数据源配置
        DataSourceConfig dsc = new DataSourceConfig();
        dsc.setDbType(DbType.MYSQL)  //设置数据库类型
                .setDriverName("com.mysql.jdbc.Driver")
                .setUrl("jdbc:mysql://127.0.0.1:3306/rhl?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC")
                .setUsername("rhl")
                .setPassword("070499");
        mpg.setDataSource(dsc);

        //3.包名策略配置
        PackageConfig pc = new PackageConfig();
        pc.setParent("com.djz")    //父包名
                .setMapper("mapper")   // mapper 层  (接口)
                // .setModuleName("")//模块配置
                .setService("service")   //service层
                .setController("controller")  //controller 层
                .setEntity("pojo")      //实体层
                //   .setEntity("entity")  //实体层
                .setXml("mapper");   //  mapper 层  (xml)
        mpg.setPackageInfo(pc);

        //4.策略配置

        //自动填充配置
        TableFill createFill = new TableFill("create_time", FieldFill.INSERT);      //创建时间,自动填充
        TableFill updateFill = new TableFill("update_time", FieldFill.INSERT_UPDATE);       //更新时间,自动填充

        List<TableFill> tableFills = new ArrayList();
        tableFills.add(createFill);
        tableFills.add(updateFill);

        StrategyConfig sc = new StrategyConfig();
        sc.setInclude("books")   //   需要映射的数据库表名
                .setEntityLombokModel(true)  //开启lombok注册生成
                .setLogicDeleteFieldName("deleted") //设置逻辑删除
                .setTableFillList(tableFills)  //自动填充配置
                .setVersionFieldName("version") //乐观锁配置
                .setRestControllerStyle(true)  //开启驼峰命名
                .setNaming(NamingStrategy.underline_to_camel)
                .setColumnNaming(NamingStrategy.underline_to_camel);
        mpg.setStrategy(sc);

        //5.执行
        mpg.execute();
    }
}

自动填充配置

package com.djz.handler;

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

import java.util.Date;

@Slf4j
@Component   //一定不要忘记处理器加载注解component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
           this.setFieldValByName("createTime",new Date(),metaObject); 

    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

乐观锁配置

package com.djz.config;

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.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;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
@MapperScan("com.djz.mapper")
@Configuration
public class MyBatisPlusConfig {
    //乐观锁
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }
//    //分页插件
//    @Bean
//    public PaginationInterceptor paginationInterceptor(){
//        return new PaginationInterceptor();
//    }
//逻辑删除插件
   @Bean
    public ISqlInjector sqlInjector(){
        return new LogicSqlInjector();
   }
   //Sql执行效率插件
   @Bean
   @Profile({"dev","test"})//设置dev test 环境开启
    public PerformanceInterceptor performanceInterceptor(){
        PerformanceInterceptor performanceInterceptor=new PerformanceInterceptor();
        performanceInterceptor.setMaxTime(5000);//设置sql执行的最大时间
       performanceInterceptor.setFormat(true);
        return performanceInterceptor;
   }


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值