AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率,让程序员早点下班去陪女朋友~
官方文档地址:https://baomidou.com/guide/generator.html
官网已经很详细的介绍了代码生成器的用法,但有些细节还没有讲清楚,你按官网的方式去操作,不一定能成功,至少我是没有跑成功的
废话不多说,直接上代码吧
整体流程
先从整体上看一下,生成代码需要做哪些事情
public static void main(String[] args) {
//1. 全局配置
GlobalConfig config = globalConfig();
//2. 数据源配置
DataSourceConfig dsConfig = dataSourceConfig();
//3.策略配置
StrategyConfig stConfig = strategyConfig();
//4.包名策略
PackageConfig pkConfig = packageConfig();
//5.整合配置
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setTemplateEngine(new FreemarkerTemplateEngine()) //设置模板引擎
.setPackageInfo(pkConfig)
.execute();
}
从上面的步骤可以看出来,需要生成代码需要做相关的配置
- 全局配置,配置一些全局的信息,比如作者、生成路径、主键策略等通用信息
- 数据源配置,配置库连接相关信息
- 策略配置,需要生成的表、表跟实体的映射策略等
- 包名配置,可以配置父包名、entity、service、controller等的名称
- 整合配置,最后一步就是需要把上面所有的配置都整合到一起,然后按设定的策略执行
除了上面的一些基本策略,还可以根据自己实际的情况进行自定义配置策略
下面来看一下,每一步具体的配置
1、全局配置
private static GlobalConfig globalConfig(){
return new GlobalConfig()
.setActiveRecord(true)
.setAuthor("kxg") //作者
.setOutputDir("E:\\workspace\\MyBatis-demo\\src\\main\\java") //生成路径
.setFileOverride(true)//是否文件覆盖,如果多次
.setServiceName("%sService") //设置生成的service接口名首字母是否为I
.setIdType(IdType.AUTO) //主键策略
.setBaseResultMap(true)
.setBaseColumnList(true);
}
2、数据源配置
private static DataSourceConfig dataSourceConfig(){
return new DataSourceConfig()
.setDbType(DbType.MYSQL)
.setDriverName("com.mysql.jdbc.Driver")
.setUrl("jdbc:mysql://localhost:3306/testdb1")
.setUsername("root")
.setPassword("123456");
}
3、策略配置
private static StrategyConfig strategyConfig(){
return new StrategyConfig()
.setCapitalMode(true) // 全局大写命名
.setNaming(NamingStrategy.underline_to_camel) // 数据库表映射到实体的命名策略
.setInclude("tb_user") //生成的表名,多个用逗号隔开
.setTablePrefix("tb_"); // 表前缀
}
策略配置还有很多其他的属性可以配置,具体可以查看一下StrategyConfig中的属性
4、包名配置
private static PackageConfig packageConfig(){
return new PackageConfig()
.setParent("com.kxg.mp.demo")//父包名
.setController("controller")
.setEntity("model")
.setService("service")
.setMapper("mapper")
.setXml("mapper");
}
经过以上配置,基本上就完成了一个最简单的代码生成器,很多网上的博客到这一步就完成了,如果此时运行代码是会报错的,因为还漏掉了很重要的一个步骤,包括官方网站上也没有对这一个步骤做详细说明
这一步就是模板,代码生成器是需要依赖模板的,也就是你的controller、service、mapper这些生成的文件,都是通过对应的模板来进行生成的,没有模板当然就不可能生成代码了
那模板在哪里呢?其实就在你的项目里面,怎么说呢?它包含在你引入的mybatis-plus-generator的jar包中,如图所示
在templates目录下,是所有的默认模板,你需要把模板Copy到你的项目中(不知道还有没有更好的方法)
这里以FreeMarker为例,把.ftl文件类的模板全部拷贝到你项目的/resources/templates目录下,就会读取到
这些默认的模板里面只包括了最基本的信息,你可以对模板进行修改来实现你自定义的模板
这里需要注意一下,如果你选择使用FreeMarker作为代码生成的模板,你就需要设置一下模板引擎
//5.整合配置
new AutoGenerator().setGlobalConfig(config)
.setDataSource(dsConfig)
.setStrategy(stConfig)
.setTemplateEngine(new FreemarkerTemplateEngine()) //设置模板引擎
.setPackageInfo(pkConfig)
.execute();
当然你也可以选择其他的模板引擎,mybaits-plus支持 Velocity、Freemarker、Beetl这几种模板,默认是Velocity
好了,到这里就可以运行上面的代码了,运行之后的结果如下:
如果感觉对你有些帮忙,请收藏好,你的关注和点赞是对我最大的鼓励!
如果想跟我一起学习,坚信技术改变世界,请关注【Java天堂】公众号,我会定期分享自己的学习成果,第一时间推送给您