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. 小功告成
本文来自博客园,作者:六爻呈乾,转载请注明原文链接:https://www.cnblogs.com/ilycq/articles/15245243.html