Live2D

mabatis-plus自动生成代码插件工具类

自动生成代码插件,需要生成那个表的代码,设置要映射的表名即可stc.setInclude("client");//设置要映射的表名
1. 记得要先导入依赖O
<dependency>
          <groupId>org.apache.velocity</groupId>
          <artifactId>velocity-engine-core</artifactId>
          <version>2.0</version>
      </dependency>
2. 由于自动生成代码插件模板中配置了swagger2生成在线api文档,所以需要配置swagger2,请移步至swagger2 (简简单单就配置ok了,如果不需要则删除gc.setSwagger2(true);即可)
3. 创建mybatisplus配置类,代码如下
  package com.lix.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.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;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@MapperScan("com.lix.mapper")
@Configuration
@EnableTransactionManagement
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"})
  public PerformanceInterceptor performanceInterceptor(){
      final PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
      performanceInterceptor.setMaxTime(100);
      performanceInterceptor.setFormat(true);
      return performanceInterceptor;
  }


}

4. 在测试类中创建并编写自动生成代码的模板,如下所示:
package com.lix;

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 java.util.ArrayList;

//代码自动生成器
public class LixCode {
    public static void main(String[] args) {
        //构建代码自动生成器对象
        final AutoGenerator autoGenerator = new AutoGenerator();
        //全局配置
        final GlobalConfig gc = new GlobalConfig();
        final String projectPath = System.getProperty("user.dir");
        gc.setOutputDir(projectPath+"/src/main/java");
        gc.setAuthor("lix");
        gc.setOpen(false);
        gc.setFileOverride(false);//是否覆盖原来存在的
        gc.setServiceName("%sService");//去service的I前缀
        gc.setIdType(IdType.ID_WORKER);
        gc.setDateType(DateType.ONLY_DATE);
        gc.setSwagger2(true);
        autoGenerator.setGlobalConfig(gc);

        //配置数据源
        final DataSourceConfig dsc = new DataSourceConfig();
        dsc.setUrl("jdbc:mysql://localhost:3306/fruit_shop?useSSL=false&useUnicode=ture&characterEncoding=utf-8&serverTimezone=GMT%2B8");
        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
        dsc.setUsername("root");
        dsc.setPassword("root");
        dsc.setDbType(DbType.MYSQL);
        autoGenerator.setDataSource(dsc);

        //配置包
        final PackageConfig pc = new PackageConfig();
        pc.setModuleName("shop");
        pc.setParent("com.lix");
        pc.setEntity("pojo");
        pc.setMapper("mapper");
        pc.setService("service");
        pc.setController("controller");
        autoGenerator.setPackageInfo(pc);

        //策略配置
        final StrategyConfig stc = new StrategyConfig();
        stc.setInclude("client");//设置要映射的表名
        stc.setNaming(NamingStrategy.underline_to_camel);
        stc.setColumnNaming(NamingStrategy.underline_to_camel);
        stc.setEntityLombokModel(true);//自动lombok
        stc.setLogicDeleteFieldName("deleted");//逻辑删除列

        //自动填充配置
        final TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
        final TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT);
        final ArrayList<TableFill> tableFills = new ArrayList<>();
        tableFills.add(gmtCreate);
        tableFills.add(gmtModified);
        stc.setTableFillList(tableFills);

        //乐观锁
        stc.setVersionFieldName("version");

        //风格配置
        stc.setRestControllerStyle(true);
        stc.setControllerMappingHyphenStyle(true);// localhost:8080/hello_id_2
        autoGenerator.setStrategy(stc);

        //执行
        autoGenerator.execute();

    }
}

5. 小功告成
posted @ 2021-09-09 00:50  六爻呈乾  阅读(90)  评论(0编辑  收藏  举报