是不是觉得有时候数据库中表太多,生成实体类需要写很多字段话费很多时间,在开始项目的时候每次都需要建各种类,以及每个表的mapper层、service层等,为了能节约时间以及省略掉这些繁琐的步骤,接下来我要向各位介绍一个工具——代码生成器。
我创建的是springboot的项目,接下来让我们看看怎么做的吧。
首先,导入相关依赖:
<!--代码生成器-->
<dependency><!-- mybatis-plus代码生成器 -->
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
然后,创建一个config目录,在目录中创建一个CodeGenerator工具类
public class CodeGenerator {
public static void main(String[] args) {
//数据库连接
String url = "jdbc:mysql://localhost:3306/gcxy_teach?serverTimezone=UTC";//数据库url
String username = "输入你对应数据库的账号";//账号
String password = "输入你数据库的密码";//密码
// 项目配置 //项目模块名,如果是有父项目的话,需要配置。
String module = "springboot2"; // 子项目模块名
//全局配置参数
String author = "此处作者你随便输入即可";//作者
String outputDir = System.getProperty("user.dir") + "/" + module + "/src/main/java";//指定输出目录
//包配置参数
String parent = "";//父包名(例如:com.ws)
String moduleName = "";//父包模块名
String entity = "bean";//Entity 实体类包名
String mapper = "dao";//Mapper 包名
String mapperXml = "Mapper";//Mapper XML 包名
String service = "service";//Service 包名
String serviceImpl = "service.impl";//Service Impl 包名
String controller = "controller";//Controller 包名*/
//要生成的数据库表
List<String> tables = new ArrayList<>();
// tables.add("userinfo");
// tables.add("user");
tables.add("t_user");
// tables.add("t_order");
//设置别名
Map<String, String> tableAlias = new HashMap<>();
tableAlias.put("t_user", "Users"); //设置t_user的别名为UserAlias
//开始生成
FastAutoGenerator.create(url,username,password)
//全局配置
.globalConfig(builder -> {
builder.author(author)
.outputDir(outputDir)
.disableOpenDir() //生成之后不打开目录
/*.enableSwagger()//开启swagger*/
.fileOverride() // 覆盖已生成文件
.dateType(DateType.ONLY_DATE) //定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
.commentDate("yyyy-MM-dd");//注释日期
})
//包配置
.packageConfig(builder -> {
builder.parent(parent)
.moduleName(moduleName)
.entity(entity)
.mapper(mapper)
.xml(mapperXml)
.service(service)
.serviceImpl(serviceImpl)
.controller(controller);
})
//策略配置
.strategyConfig(builder -> {
builder.addInclude(tables)
.addTablePrefix("t_") // 设置过滤表前缀
//开启生成实体类
.entityBuilder()
.enableLombok()//开启 lombok 模型
.enableTableFieldAnnotation()//开启生成实体时生成字段注解
//开启生成mapper
.mapperBuilder()
//.enableBaseResultMap()//启用 BaseResultMap 生成
.superClass(BaseMapper.class)//设置父类
.enableMapperAnnotation()//开启 @Mapper 注解
.formatMapperFileName("%sDao")//格式化 mapper 文件名称
.formatXmlFileName("%sMapper")//格式化 xml 实现类文件名称
//开启生成service及impl
.serviceBuilder()
.formatServiceFileName("%sService")//格式化 service 接口文件名称
.formatServiceImplFileName("%sServiceImpl")//格式化 service 实现类文件名称
//开启生成controller
.controllerBuilder()
// 映射路径使用连字符格式,而不是驼峰
//.enableHyphenStyle()
.formatFileName("%sController")//格式化文件名称
.enableRestStyle();
})
.templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
//.templateConfig(builder -> builder.controller(""))//关闭生成controller
.execute();
}
}
以上便是代码生成器的代码,每一行都做了注释,当然你也可以在此基础上做你想要的变动,完成之后运行这个配置类就可以啦!
基于springboot的项目,所以里面的dao(mapper)层和service层的逻辑都已经帮你实现好了,你只管在你想要用到的地方进行调用即可~