目覚めはじめたとまどいも,なんだか悪くない
代码生成器
将MyBatisPlus所需的实体类以及服务层、控制层、数据处理层等相关类分为模板、数据库相关配置、开发者自定义配置
其中
模板:把同一类型的类相同的部分提取出来作为模板,由MyBatisPlus提供
数据库相关配置:与数据库相关的属性,通过读取数据库获取信息
开发者自定义配置:例如注解相关等,需要开发者自己手工配置
代码生成器依赖如下,这里一定要注意版本,否则会出现类引用的问题:
<dependencyManagement><dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-bom</artifactId><version>3.5.16</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
<dependencies><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency>
</dependencies>
最基本的代码:
public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();autoGenerator.execute();}
}
这样直接执行的话会出现错误,因为我们没有配置最基本的数据库连接

使用setDataSource方法和DataSourceConfig类封装数据库连接信息,添加数据库连接配置
public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);autoGenerator.execute();}
}
此时自动弹出了新生成的文件夹,这是代码生成器给我们生成的模板,但是均为空白,而且生成的位置不符合我们的要求

进一步添加要求,使用setGlobalConfig方法和GlobalConfig类封装全局配置信息,添加全局配置
public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);autoGenerator.execute();// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置代码生成的目标目录gc.setOpen(false); //设置完毕后是否打开目录gc.setAuthor("tcswuzb"); //设置作者gc.setFileOverride(true); //设置是否覆盖原文件gc.setMapperName("%sDao"); //设置数据层接口,%s为占位符,指代模板名gc.setIdType(IdType.ASSIGN_ID); //设置Id生成策略autoGenerator.setGlobalConfig(gc);}
}
初始目录如下:

执行后生成如下:

使用setPackageInfo方法和PackageConfig类封装包名信息,添加包名设置
public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置代码生成的目标目录gc.setOpen(false); //设置完毕后是否打开目录gc.setAuthor("tcswuzb"); //设置作者gc.setFileOverride(true); //设置是否覆盖原文件gc.setMapperName("%sDao"); //设置数据层接口,%s为占位符,指代模板名gc.setIdType(IdType.ASSIGN_ID); //设置Id生成策略autoGenerator.setGlobalConfig(gc);// 包配置PackageConfig pc = new PackageConfig();pc.setParent("org.example"); //设置存放包名pc.setEntity("pojo"); // 设置数据实体类包名pc.setMapper("Dao"); // 设置数据处理层包名autoGenerator.setPackageInfo(pc);autoGenerator.execute();}
}
生成效果如下:

最后,使用setStrategy方法和StrategyConfig类封装策略信息,添加策略设置
public class CodeGenerator {public static void main(String[] args) {AutoGenerator autoGenerator = new AutoGenerator();DataSourceConfig dsc = new DataSourceConfig();dsc.setUrl("jdbc:mysql://localhost:3306/dbtest2");dsc.setDriverName("com.mysql.cj.jdbc.Driver");dsc.setUsername("root");dsc.setPassword("123456");autoGenerator.setDataSource(dsc);// 全局配置GlobalConfig gc = new GlobalConfig();gc.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); //设置代码生成的目标目录gc.setOpen(false); //设置完毕后是否打开目录gc.setAuthor("tcswuzb"); //设置作者gc.setFileOverride(true); //设置是否覆盖原文件gc.setMapperName("%sDao"); //设置数据层接口,%s为占位符,指代模板名gc.setIdType(IdType.ASSIGN_ID); //设置Id生成策略autoGenerator.setGlobalConfig(gc);// 包配置PackageConfig pc = new PackageConfig();pc.setParent("org.example"); //设置存放包名pc.setEntity("pojo"); // 设置数据实体类包名pc.setMapper("Dao"); // 设置数据处理层包名autoGenerator.setPackageInfo(pc);// 策略配置StrategyConfig strategy = new StrategyConfig();strategy.setInclude("emptest"); //设置参与生成的表名strategy.setRestControllerStyle(true); //是否启用Rest风格strategy.setVersionFieldName("version"); //设置乐观锁属性名称strategy.setLogicDeleteFieldName("deleted"); //设置删除字段逻辑名称strategy.setEntityLombokModel(true); //是否启用Lombok注解autoGenerator.setStrategy(strategy);autoGenerator.execute();}
}
生成效果如下:

