1 pom.xml
连接MySQL数据库、MyBatis-plus启动器、MyBatis-plus-geneartor生成器。
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mysql pool-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
2 生成器
代码生成所需的步骤如下:
- 配置代码生成的路径
- 配置生成文件的名称
- 连接数据库
- 配置需要生成的文件如实体文件entity,service,mapper,xml,controller等
- 配置操作的数据表
- 执行脚本
package com.company.springbootmybatisplus.utils;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
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.rules.NamingStrategy;
import java.util.Scanner;
/**
* Generate code using mybatis-plus generator.
* @author xindaqi
* @since 2020-11-06
*/
public class GenerateCode {
public static String scanner(String tip) {
Scanner scanner = new Scanner(System.in);
StringBuilder help = new StringBuilder();
help.append("请输入:" + tip + ":");
System.out.println(help.toString());
if(scanner.hasNext()) {
String ipt = scanner.next();
if(StringUtils.isNotBlank(ipt)) {
return ipt;
}
}
throw new MybatisPlusException("请输入正确的:" + tip + "!");
}
public static void main(String[] args) {
/**
* 代码生成器.
* 使用mybatis-plus.
*/
AutoGenerator mpg = new AutoGenerator();
/**
* 全局配置:
* 用户目录
*/
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
/**
* 用户目录:
* Directory:D:\Project\traditional-java-web-structure
*/
System.out.println("Directory:" + projectPath);
/**
* Windows环境目录使用:\\path
* Windows OS directory.
*/
gc.setOutputDir(projectPath + "\\src\\main\\resources\\codetemplate");
/**
* Linux环境目录使用:/path
* Linux OS directory.
*/
// gc.setOutputDir(projectPath + "/src/main/resources/codetemplate");
gc.setFileOverride(true);
gc.setActiveRecord(false);
gc.setEnableCache(false);
gc.setBaseResultMap(true);
gc.setBaseColumnList(false);
gc.setAuthor("xindaqi");
gc.setOpen(false);
gc.setControllerName("%sController");
gc.setServiceName("%sService");
gc.setServiceImplName("%sServiceImpl");
gc.setMapperName("%sMapper");
gc.setXmlName("%sMapper");
// gc.getSwagger2(true);
mpg.setGlobalConfig(gc);
/**
* 数据源配置:连接数据库
* Data source configuration.
*/
DataSourceConfig dsc = new DataSourceConfig();
dsc.setDbType(DbType.MYSQL);
dsc.setUrl("jdbc:mysql://localhost:3306/sonar?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
mpg.setDataSource(dsc);
/**
* 打包配置:
* 生产必要的分层文件,如:
* entity(数据表对应的实体)
* service(服务和实现)
* mapper(数据表操作接口Interface)
* xml(数据表操作xml文件,实现mapper)
* controller(API)
*/
PackageConfig pc = new PackageConfig();
pc.setModuleName(scanner("模块名称"));
pc.setParent("com.company.springbootmybatisplus");
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setServiceImpl("service.impl");
pc.setMapper("mapper");
pc.setXml("xml");
mpg.setPackageInfo(pc);
/**
* 策略配置.
* 操作指定的数据表,生成对应的实体和一系列文件
*/
StrategyConfig sc = new StrategyConfig();
sc.setTablePrefix(new String[] {"user_"});
sc.setNaming(NamingStrategy.underline_to_camel);
sc.setEntityLombokModel(true);
sc.setRestControllerStyle(true);
// sc.setInclude(scanner("表名:多个英文逗号隔开").split(","));
sc.setInclude(new String[] {"user_roles", "user_tokens", "users" });
mpg.setStrategy(sc);
mpg.execute();
}
}