Mybatis-Plus 代码生成器
一、配置pom.xml 文件
<!--数据库驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- mybatis plus 代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--自动生成代码插件-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.28</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<!-- 模板引擎 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<!--配置ApiModel在实体类中不生效-->
<dependency>
<groupId>com.spring4all</groupId>
<artifactId>spring-boot-starter-swagger</artifactId>
<version>1.5.1.RELEASE</version>
</dependency>
二、编写Java代码
package com.ljy;
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.InjectionConfig;
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;
import java.util.HashMap;
import java.util.Map;
//代码自动生成器
public class LJYCode {
public static void main(String[] args) {
//需要构建一个 代码自动生成器 对象
//创建代码自动生成器对象
AutoGenerator mpg = new AutoGenerator();
//配置策略
//1、 全局配置
GlobalConfig gc = new GlobalConfig();//一定要是import com.baomidou.mybatisplus.generator.config.GlobalConfig; 下面的 千万不要导错包
String projectPath = System.getProperty("user.dir");//获取用户当前系统目录
System.err.println("当前路径----》》》" + projectPath + "/src/main/java");
gc.setOutputDir(projectPath + "/src/main/java");//设置生成输出目录
gc.setAuthor("江狱");//生成作者
gc.setOpen(false);//是否打开资源管理器 当前为false
gc.setFileOverride(false);//是否需要覆盖之前生成的
gc.setServiceName("%sService");//服务的名字 //去Service的I前缀
gc.setIdType(IdType.ID_WORKER);//生成策略
gc.setDateType(DateType.ONLY_DATE);//日期类型
gc.setSwagger2(true);//是否配置Swagger文档
mpg.setGlobalConfig(gc);//丢到全局配置
//2、设置数据源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");//因为我是Mybatis 驱动8.0.25的 需要增加时区配置
dsc.setUsername("root");
dsc.setPassword("root");
dsc.setDbType(DbType.MYSQL);//数据库的类型
mpg.setDataSource(dsc);//设置数据源
//3、包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("blog");//设置模块名
pc.setParent("com.ljy");//放在那个包下
pc.setEntity("pojo");//取出包名
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//4、策略配置
StrategyConfig strategy = new StrategyConfig();
strategy.setInclude("user");//设置要映射的表名 //想同时生成多个表 使用 , 号隔开即可
strategy.setNaming(NamingStrategy.underline_to_camel);//设置包命名的规则
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//支持名字转驼峰命名
strategy.setEntityLombokModel(true);//是否使用Lombok 开启注解 //自动生成Lombok
strategy.setLogicDeleteFieldName("deleted");//设置逻辑删除名字
//自动填充配置
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);//参数一:是数据库中的字段名为 创建时间字段
// TableFill createModified = new TableFill("create_modified", FieldFill.INSERT_UPDATE);//参数一:是数据库中的字段名为 修改字段
//创建ArrayList集合
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
// tableFills.add(createModified);
strategy.setTableFillList(tableFills);//自动填充策略
//乐观锁配置
strategy.setVersionFieldName("version");//设置乐观锁
strategy.setRestControllerStyle(true);//设置驼峰命名
strategy.setControllerMappingHyphenStyle(true);//localhost:8080/hello_id_2 设置地址下划线命名
mpg.setStrategy(strategy);
//不加这个会报空指针异常
InjectionConfig injectionConfig = new InjectionConfig() {
//自定义属性注入:abc
//在.ftl(或者是.vm)模板中,通过${cfg.abc}获取属性
@Override
public void initMap() {
Map<String, Object> map = new HashMap<>();
map.put("abc", this.getConfig().getGlobalConfig().getAuthor() + "-mp");
this.setMap(map);
}
};
//自定义配置
mpg.setCfg(injectionConfig);
mpg.execute();//执行代码构造器
}
}
运行结果