一,mybatis-plus代码生成器

在项目开发中,在新建一个项目时,要写大量的controller和service等等,不免觉得繁琐,因此可以使用mybatis-plus的一套逆向生成工具,解决大部分代码开发的问题。

二,依赖

这里依旧使用springboot项目,因此需要在pom文件中加入依赖如下,copy就完事了,如果又版本问题,直接改下版本就好了

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

<!-- mysql驱动包 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

<!-- myBatis -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.0</version>
</dependency>
<!-- Junit单元测试 -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>

<!--Log4J日志工具  打印日志-->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.14</version>
</dependency>

<!-- mybatis generertor-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.0</version>
</dependency>

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.22</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.3</version>
</dependency>

<!-- test -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

三,代码实现

随便写个测试类,运行以下代码即可。需要修改代码输出的目录,重新生成时文件是否覆盖设置成false可以在修改表名字之后一直运行而不会覆盖,逐渐策略可以改成雪花算法或者uuid,数据源的账号密码需要修改,连接的哪个数据库也需要修改,模块名那些需要修改,策略配置里面的数据库名需要修改,

/**
 * @author zhenghuisheng
 * @date 2021/02/15 17:25:36
 */
@Test
public static void main(String[] args) {
	// 1、创建代码生成器
	AutoGenerator mpg = new AutoGenerator();
	// 2、全局配置
	GlobalConfig gc = new GlobalConfig();
	String projectPath = System.getProperty("user.dir");
	System.out.println(projectPath);
	//代码最终输出的目录,尽量写绝对路径
	gc.setOutputDir("E:\auth\appsmith\src\main\java" + "/src/main/java");
	//设置作者
	gc.setAuthor("zhenghuisheng");
	gc.setOpen(false); //生成后是否打开资源管理器
	gc.setFileOverride(false); //重新生成时文件是否覆盖
	/*
	 * mp生成service层代码,默认接口名称第一个字母有 I
	 * UcenterService
	 * */
	gc.setServiceName("%sService"); //去掉Service接口的首字母I
	gc.setIdType(IdType.ID_WORKER_STR); //主键策略
	gc.setDateType(DateType.ONLY_DATE); //定义生成的实体类中日期类型
	gc.setSwagger2(true); //开启Swagger2模式

	mpg.setGlobalConfig(gc);

	// 3、数据源配置
	DataSourceConfig dsc = new DataSourceConfig();
	dsc.setUrl("jdbc:mysql://localhost:3306/guli?serverTimezone=GMT%2B8");
	dsc.setDriverName("com.mysql.cj.jdbc.Driver");
	dsc.setUsername("root");
	dsc.setPassword("XXXxxxxxxxx");
	dsc.setDbType(DbType.MYSQL);
	mpg.setDataSource(dsc);

	// 4、包配置
	PackageConfig pc = new PackageConfig();
	pc.setModuleName("study"); //模块名
	pc.setParent("com.zheng");
	pc.setController("controller");
	pc.setEntity("entity");
	pc.setService("service");
	pc.setMapper("mapper");
	mpg.setPackageInfo(pc);

	// 5、策略配置
	StrategyConfig strategy = new StrategyConfig();
	//表名称对应的实体类
	strategy.setInclude("user");
	strategy.setNaming(NamingStrategy.underline_to_camel); //数据库表映射到实体的命名策略
	strategy.setTablePrefix(pc.getModuleName() + "_"); //生成实体时去掉表前缀

	strategy.setColumnNaming(NamingStrategy.underline_to_camel); //数据库表字段映射到实体的命名策略
	strategy.setEntityLombokModel(true); // lombok 模型 @Accessors(chain = true) setter链式操作

	strategy.setRestControllerStyle(true); //restful api风格控制器
	strategy.setControllerMappingHyphenStyle(true); //url中驼峰转连字符

	mpg.setStrategy(strategy);

	// 6、执行
	mpg.execute();
}

四,效果如下

首先先建立表,如下本地两张表,分别是用户表和角色表

mybatis 生成flink sql语句 mybatis-plus生成器_spring


没运行代码之前,效果是这样子

mybatis 生成flink sql语句 mybatis-plus生成器_mybatis_02


运行代码之后,有关user类的controller,service等全部出来了

mybatis 生成flink sql语句 mybatis-plus生成器_mybatis_03

运行完这个user之后,将这个5里面的配置策略改成role角色表,如下,有关角色表相关的信息也全部出来了

// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
//表名称对应的实体类
strategy.setInclude("role");

mybatis 生成flink sql语句 mybatis-plus生成器_spring boot_04

那么逆向工具的使用就大功告成了!