平时写代码中发现Controller、Service、dao、entity里面的类很多都是重复的。如果有一个代码生成器就可以帮我们自动写一些代码不用我们重复的写。
经过研究发现,用Mybatis-plus可以实现代码生成,在官网上也可以很详细的看到使用的方法Mybatis-plus官网
以下是代码生成器的几个步骤
1、首先我们需要导入所用的依赖包
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.31</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
2、创建一个静态方法写入以下代码即可成功生成代码
public class CodeAutoCreate {
public static void main(String[] args) {
FastAutoGenerator.create("数据库的URL", "数据库名字", "数据库密码")
.globalConfig(builder -> {
builder.author("作者的名字") // 设置作者
.fileOverride() // 覆盖已生成文件
.outputDir("C:\\Users\\admin\\Desktop\\codeCreate"); // 指定输出目录
})
.dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT) {
// 自定义类型转换
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
}))
.packageConfig(builder -> {
builder.parent("com.emp.application") // 设置父包名
// .moduleName("Emp") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "C:\\Users\\admin\\Desktop\\codeCreate")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("t_dept") // 设置需要生成的表名
.addTablePrefix("t_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
3、创建完成可以拖入自己的项目,也可以生成在其他地方检查一下再拖入,毕竟自动生成的代码和我们自己创建的还是会有差异的