1、准备
准备mysql-8.x。
2、项目搭建
2.1 项目依赖
<dependencies>
<!-- 使用mybatis_plus的代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- velocity模板引擎-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<!-- 数据库驱动包管理 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.0.32</version>
</dependency>
<!-- mybatis plus 管理 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.2</version>
</dependency>
<!-- 非必须的,只是在项目中不让生成的代码编译异常 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
</dependency>
</dependencies>
2.2 java代码
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.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CodeGenerator {
public static final String DRIVER_NAME = "com.mysql.cj.jdbc.Driver";
public static final String URL = "jdbc:mysql://192.168.44.100:3306/mall_all?useUnicode=true&useSSL=false&characterEncoding=utf8";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
public static final String AUTHOR = "zhouzz";
public static final String PARENT_PACKAGE = "com.mall.cloud";
public static final String MODULE_NAME = "user";
public static void main(String[] args) {
String projectPath = System.getProperty("user.dir");
projectPath = projectPath + "/mall-zcodegen";
String outputDir = projectPath + "/src/main/java";
String xmlPath = projectPath + "/src/main/resources" + "/mapper";
//1.获取代码生成器的对象
AutoGenerator autoGenerator = new AutoGenerator();
//设置数据库相关配置
DataSourceConfig dataSource = new DataSourceConfig();
dataSource.setDriverName(DRIVER_NAME);
dataSource.setUrl(URL);
dataSource.setUsername(USERNAME);
dataSource.setPassword(PASSWORD);
autoGenerator.setDataSource(dataSource);
//设置全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(outputDir);
//设置生成完毕后是否打开生成代码所在的目录
globalConfig.setOpen(false);
//重新生成时文件是否覆盖 一般不覆盖我们的代码
globalConfig.setFileOverride(false);
//设置作者
globalConfig.setAuthor(AUTHOR);
//设置是否覆盖原始生成的文件
globalConfig.setFileOverride(true);
//设置Service接口名,%s为占位符,指代模块名称
globalConfig.setServiceName("%sService");
//设置数据层接口名,%s为占位符,指代模块名称
globalConfig.setMapperName("%sMapper");
//开启Swagger2模式
globalConfig.setSwagger2(true);
//设置Id生成策略
globalConfig.setIdType(IdType.ASSIGN_ID);
//DateType.ONLY_DATE 表示使用 java.util.Date 类型作为日期类型,datetime->java.util.Date
globalConfig.setDateType(DateType.ONLY_DATE);
autoGenerator.setGlobalConfig(globalConfig);
//设置包名相关配置
PackageConfig packageInfo = new PackageConfig();
//设置生成的包名,与代码所在位置不冲突,二者叠加组成完整路径
packageInfo.setParent(PARENT_PACKAGE);
packageInfo.setModuleName(MODULE_NAME);
//设置实体类包名
packageInfo.setEntity("domain");
//设置数据层包名
packageInfo.setMapper("mapper");
autoGenerator.setPackageInfo(packageInfo);
//策略设置
StrategyConfig strategyConfig = new StrategyConfig();
//设置当前参与生成的表名,参数为可变参数
strategyConfig.setInclude("user");
//设置数据库表的前缀名称,模块名 = 数据库表名 - 前缀名 例如: User = tbl_user - tbl_
strategyConfig.setTablePrefix("t_");
//数据库表映射到实体的命名策略 不用改
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
//设置是否启用Rest风格
strategyConfig.setRestControllerStyle(true);
//设置乐观锁字段名
//strategyConfig.setVersionFieldName("version");
//设置逻辑删除字段名
//strategyConfig.setLogicDeleteFieldName("deleted");
//设置是否启用lombok
strategyConfig.setEntityLombokModel(true);
//restful api风格控制器
strategyConfig.setRestControllerStyle(true);
//url中驼峰转连字符
strategyConfig.setControllerMappingHyphenStyle(true);
//2.执行生成操作
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();
}
}
2.2 配置对应元素
根据上面的代码,配置对应的数据库连接,和生成的表即可。
3.generator-ui
上面的代码生成器需要手动填写表信息,这样不灵活。那么是否有界面支持呢。
下面就轮到 generator-ui。
3.1 依赖
<dependencies>
<dependency>
<groupId>com.github.davidfantasy</groupId>
<artifactId>mybatis-plus-generator-ui</artifactId>
<version>2.0.5</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
</dependencies>
java代码
import com.github.davidfantasy.mybatisplus.generatorui.GeneratorConfig;
import com.github.davidfantasy.mybatisplus.generatorui.MybatisPlusToolsApplication;
import com.github.davidfantasy.mybatisplus.generatorui.mbp.NameConverter;
public class GeneratorUiServer {
public static final int SERVER_PORT = 8068;
public static final String MYSQL_IP = "192.168.44.100";
public static final String MYSQL_PORT = "3306";
public static final String MYSQL_DATABASE = "pmall";
public static final String MYSQL_USERNAME = "root";
public static final String MYSQL_PASSWORD = "123456";
private static final String TABLE_PREFIX = "t_";
public static final String BASE_PACKAGE = "com.mall.cloud";
public static void main(String[] args) {
String url = "jdbc:mysql://%s:%s/%s?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
url = String.format(url, MYSQL_IP, MYSQL_PORT, MYSQL_DATABASE);
GeneratorConfig config = GeneratorConfig.builder()
.jdbcUrl(url)
.userName(MYSQL_USERNAME)
.password(MYSQL_PASSWORD)
.driverClassName("com.mysql.cj.jdbc.Driver")
// 数据库schema,MySQL,PGSQL,ORACLE,DB2类型的数据库需要指定
//.schemaName("myBusiness")
// 如果需要修改entity及其属性的命名规则,以及自定义各类生成文件的命名规则,
// 可自定义一个NameConverter实例,覆盖相应的名称转换方法,详细可查看该接口的说明:
.nameConverter(new NameConverter() {
/**
* 自定义Service类文件的名称规则
*/
@Override
public String serviceNameConvert(String tableName) {
return this.entityNameConvert(tableName, TABLE_PREFIX) + "Service";
}
/**
* 自定义Controller类文件的名称规则
*/
@Override
public String controllerNameConvert(String tableName) {
return this.entityNameConvert(tableName, TABLE_PREFIX) + "Controller";
}
})
//所有生成的java文件的父包名,后续也可单独在界面上设置
.basePackage(BASE_PACKAGE)
.port(SERVER_PORT)
.build();
MybatisPlusToolsApplication.run(config);
}
}
3.3 测试
访问 http://localhost:8068 就可以看到对应的 UI界面了。
界面操作都是傻瓜式的就不啰嗦了。
评论区