现在主流的工程结构里面,接口层都是放在controller包,业务层都是放在service包,实体类都是放在entity包,dao和mapper xml都是放在mapper包下面的。每次初始化工程的时候都需要手动来一遍,确实会有繁琐,所以才有了我们的自动化代码生成器,帮助我们生成如上描述的项目结构。
首先需要在pom中引入必要的依赖:
<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-generator -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.velocity/velocity-engine-core -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
然后在合适的地方写一个main方法类即可,该方法只是后台手动启动的。
public class MyBatisPlusGenerator {
public static void main(String[] args) {
// 1、创建代码生成器
AutoGenerator mpg = new AutoGenerator();
// 2、全局配置
GlobalConfig gc = new GlobalConfig();
// 获取工程所在的绝对路径(不包含子工程的路径)
String projectPath = System.getProperty("user.dir");
// 设置生成文件想要输出的绝对路径
gc.setOutputDir(projectPath + "/src/main/java");
// 创建文件类注释中的作者
gc.setAuthor("zhangxun");
// 是否打开输出目录
gc.setOpen(false);
// 3、数据源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://x.x.x.x:3306/zhangxun?characterEncoding=utf-8&&serverTimezone=Asia/Shanghai&&useSSL=false");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("root");
// 4、包配置
PackageConfig pc = new PackageConfig();
pc.setModuleName(null);
// 设置输出目录下面的包结构,文件会放在/src/main/java/com.xun.mybatis-plus下面
pc.setParent("com.xun.mybatis-plus");
// 设置各种包名
pc.setController("controller");
pc.setEntity("entity");
pc.setService("service");
pc.setMapper("mapper");
// 5、策略配置
StrategyConfig strategy = new StrategyConfig();
// 需要对哪些表进行自动代码生成,变长参数,可以设置多个
strategy.setInclude("zx_user");
strategy.setNaming(NamingStrategy.underline_to_camel);
// 标记表前缀,在生成代码时可以不把表前缀放到文件名上
strategy.setTablePrefix("zx_");
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 实体类是否为lombok类型
strategy.setEntityLombokModel(true);
// Controller是否为Rest的
strategy.setRestControllerStyle(true);
strategy.setControllerMappingHyphenStyle(true);
mpg.setGlobalConfig(gc);
mpg.setDataSource(dsc);
mpg.setPackageInfo(pc);
mpg.setStrategy(strategy);
// 6、执行
mpg.execute();
}
}
执行该main方法,就能看到和表zx_user
相对应的代码都自动生成了,确实很方便。
关于全局配置、数据源配置、包配置、策略配置和自定义配置有很多配置项可以参考官网,或者阅读源码中的逻辑和注释也能明白。
个人感觉只有在初始化项目时,表关系已经理清楚,确定表的数量很多的时候,使用代码生成器才是划算的,可以省去大量的手动创建工作。但是学习代码生成器的使用和各种配置也是需要一定的时间的,说不定有这个时间早就已经手动创建好了。
网友评论