mybatis_plus 代码自动生成
1 导入依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version>2.3</version> </dependency>
2 写配置类:
import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.GlobalConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.converts.OracleTypeConvert; import com.baomidou.mybatisplus.generator.config.rules.DateType; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import org.junit.jupiter.api.Test; /** * @author tlj * @date 2021/10/12 17:47:54 */ public class AutoGenerate { @Test public void autoGenerate() { // Step1:代码生成器 AutoGenerator mpg = new AutoGenerator(); // Step2:全局配置 GlobalConfig gc = new GlobalConfig(); // 填写代码生成的目录(需要修改) String projectPath = "E:\IdeaWorkerSpace\mybatis_plus_test"; // 拼接出代码最终输出的目录 gc.setOutputDir(projectPath + "/src/main/java"); // 配置开发者信息(可选)(需要修改) gc.setAuthor("tlj"); // 配置是否打开目录,false 为不打开(可选) gc.setOpen(false); // 实体属性 Swagger2 注解,添加 Swagger 依赖,开启 Swagger2 模式(可选) gc.setSwagger2(true); // 重新生成文件时是否覆盖,false 表示不覆盖(可选) gc.setFileOverride(false); // 配置主键生成策略,此处为 ASSIGN_ID(可选) gc.setIdType(IdType.AUTO); // 配置日期类型,此处为 ONLY_DATE(可选) gc.setDateType(DateType.ONLY_DATE); // 默认生成的 service 会有 I 前缀 gc.setServiceName("%sService"); mpg.setGlobalConfig(gc); // Step3:数据源配置(需要修改) DataSourceConfig dsc = new DataSourceConfig(); // 配置数据库 url 地址 dsc.setUrl("你的数据库URL"); dsc.setDbType(DbType.ORACLE); dsc.setTypeConvert(new OracleTypeConvert()); //dsc.setSchemaName("mybatis_plus_test"); // 可以直接在 url 中指定数据库名 // 配置数据库驱动 dsc.setDriverName("oracle.jdbc.driver.OracleDriver"); // 配置数据库连接用户名 dsc.setUsername("xxx"); // 配置数据库连接密码 dsc.setPassword("123456"); mpg.setDataSource(dsc); // Step:4:包配置 PackageConfig pc = new PackageConfig(); // 配置父包名(需要修改) pc.setParent("com.tan"); // 配置模块名(需要修改) //pc.setModuleName("kjk-cloud"); // 配置 entity 包名 pc.setEntity("entity"); // 配置 mapper 包名 pc.setMapper("mapper"); // 配置 service 包名 pc.setService("service"); // 配置 controller 包名 pc.setController("controller"); mpg.setPackageInfo(pc); // Step5:策略配置(数据库表配置) StrategyConfig strategy = new StrategyConfig(); // 指定表名(可以同时操作多个表,使用 , 隔开)(需要修改) strategy.setInclude(new String[]{"TAB_PROBLEM_GT"}); // 配置数据表与实体类名之间映射的策略 strategy.setNaming(NamingStrategy.underline_to_camel); // 配置数据表的字段与实体类的属性名之间映射的策略 strategy.setColumnNaming(NamingStrategy.underline_to_camel); // 配置 lombok 模式 strategy.setEntityLombokModel(true); // 配置 rest 风格的控制器(@RestController) strategy.setRestControllerStyle(true); // 配置驼峰转连字符 strategy.setControllerMappingHyphenStyle(true); // 配置表前缀,生成实体时去除表前缀 // 此处的表名为 TAB_BROBLEM_GT,去除前缀后剩下为 BLEBREM_GT。 //strategy.setTablePrefix( "TAB_"); mpg.setStrategy(strategy); // Step6:执行代码生成操作 mpg.execute(); } }
3 运行:
注意:
一定注意,dsc.setDbType(DbType.ORACLE)千万不要写成dsc.setDbType(DbType.ORACLE_12C)。如果参数是DbType.ORACLE,那么将使用OracleQuery类的对象实现对目标用户表的查询。但如果参数为DbType.ORACLE_12C,那么实际上是使用MySqlQuery类的对象对目标用户表进行查询(应该是官方的一个Bug)。
另一点需要注意的就是 strategy.setIncludeI()方法中的表名一定要大写,否则无法查询到目标表。我就是表名没有大写,所以卡了半天!!!