您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關(guān)SpringBoot如何使用MyBatis-Puls代碼生成器,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
數(shù)據(jù)庫結(jié)構(gòu):
依賴導入
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <version>5.1.39</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.30</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
配置freemarker是因為myBatis中默認的引擎是freemarker,支持自定義引擎
目錄結(jié)構(gòu)
官方生成器類
CodeGenerator
public class CodeGenerator { /** * <p> * 讀取控制臺內(nèi)容 * </p> */ public static String scanner(String tip) { Scanner scanner = new Scanner(System.in); StringBuilder help = new StringBuilder(); help.append("請輸入" + tip + ":"); System.out.println(help.toString()); if (scanner.hasNext()) { String ipt = scanner.next(); if (StringUtils.isNotBlank(ipt)) { return ipt; } } throw new MybatisPlusException("請輸入正確的" + tip + "!"); } public static void main(String[] args) { // 代碼生成器 AutoGenerator mpg = new AutoGenerator(); // 全局配置 GlobalConfig gc = new GlobalConfig(); String projectPath = System.getProperty("user.dir"); /** * 這里需要設(shè)定一下保存的地址是本項目下的/src/main/java */ gc.setOutputDir(projectPath + "/maven1018/src/main/java"); gc.setAuthor("XYD"); gc.setOpen(false); // gc.setSwagger2(true); 實體屬性 Swagger2 注解 mpg.setGlobalConfig(gc); // 數(shù)據(jù)源配置 /** * 設(shè)置數(shù)據(jù)庫名稱和數(shù)據(jù)庫賬戶密碼 */ DataSourceConfig dsc = new DataSourceConfig(); dsc.setUrl("jdbc:mysql://localhost:3306/temporary?useUnicode=true&useSSL=false&characterEncoding=utf8"); // dsc.setSchemaName("public"); dsc.setDriverName("com.mysql.jdbc.Driver"); dsc.setUsername("root"); dsc.setPassword("12345"); mpg.setDataSource(dsc); // 包配置 /** * 設(shè)置生成文件保存地址,模塊名為命令窗口輸入的模塊名 */ PackageConfig pc = new PackageConfig(); pc.setModuleName(scanner("模塊名")); pc.setParent("com.baomidou.ant"); mpg.setPackageInfo(pc); // 自定義配置 InjectionConfig cfg = new InjectionConfig() { @Override public void initMap() { // to do nothing } }; // 如果模板引擎是 freemarker // String templatePath = "/templates/mapper.xml.ftl"; // 如果模板引擎是 velocity // String templatePath = "/templates/mapper.xml.vm"; /** * 這里定義的是生成xml文檔的輸出配置,存放在resource下 */ // 自定義輸出配置 // List<FileOutConfig> focList = new ArrayList<>(); // 自定義配置會被優(yōu)先輸出 // focList.add(new FileOutConfig(templatePath) { // @Override // public String outputFile(TableInfo tableInfo) { // // 自定義輸出文件名 , 如果你 Entity 設(shè)置了前后綴、此處注意 xml 的名稱會跟著發(fā)生變化??! // return projectPath + "/maven1018/src/main/resources/mapper/" + pc.getModuleName() // + "/" + tableInfo.getEntityName() + "Mapper" + StringPool.DOT_XML; // } // }); /* cfg.setFileCreate(new IFileCreate() { @Override public boolean isCreate(ConfigBuilder configBuilder, FileType fileType, String filePath) { // 判斷自定義文件夾是否需要創(chuàng)建 checkDir("調(diào)用默認方法創(chuàng)建的目錄,自定義目錄用"); if (fileType == FileType.MAPPER) { // 已經(jīng)生成 mapper 文件判斷存在,不想重新生成返回 false return !new File(filePath).exists(); } // 允許生成模板文件 return true; } }); */ // cfg.setFileOutConfigList(focList); // mpg.setCfg(cfg); // 配置模板 TemplateConfig templateConfig = new TemplateConfig(); // 配置自定義輸出模板 //指定自定義模板路徑,注意不要帶上.ftl/.vm, 會根據(jù)使用的模板引擎自動識別 // templateConfig.setEntity("templates/entity2.java"); // templateConfig.setService(); // templateConfig.setController(); templateConfig.setXml(null); mpg.setTemplate(templateConfig); // 策略配置 StrategyConfig strategy = new StrategyConfig(); strategy.setNaming(NamingStrategy.underline_to_camel); strategy.setColumnNaming(NamingStrategy.underline_to_camel); // strategy.setSuperEntityClass("你自己的父類實體,沒有就不用設(shè)置!"); strategy.setEntityLombokModel(true); strategy.setRestControllerStyle(true); // 公共父類 // strategy.setSuperControllerClass("你自己的父類控制器,沒有就不用設(shè)置!"); // 寫于父類中的公共字段 // strategy.setSuperEntityColumns("id"); //注釋這行否則生成的實體類中沒有Id變量 strategy.setInclude(scanner("表名,多個英文逗號分割").split(",")); strategy.setControllerMappingHyphenStyle(true); strategy.setTablePrefix(pc.getModuleName() + "_"); mpg.setStrategy(strategy); mpg.setTemplateEngine(new FreemarkerTemplateEngine()); mpg.execute(); } }
代碼生成后的配置
strategy.setSuperEntityColumns("id");
@SpringBootApplication @MapperScan("com.example.crount.mapper") public class Demo1018Application { public static void main(String[] args) { SpringApplication.run(Demo1018Application.class, args); } }
另外自己要運行代碼進行數(shù)據(jù)庫訪問,所以application.properties中也要配置數(shù)據(jù)源
# 數(shù)據(jù)庫配置 spring.datasource.url=jdbc:mysql:///temporary?characterEncoding=utf-8&useSSL=false spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=12345 #連接池配置 #spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
controller開發(fā)
注入service,修改訪問的地址,寫入訪問的方法
@RestController public class StudentController { @Autowired private IStudentService studentService; @GetMapping("/demo1") public String m1(){ Student student = studentService.getById(3); return student.getSSex(); } }
生成的代碼放到主配置類的同級目錄下,運行代碼
關(guān)于SpringBoot如何使用MyBatis-Puls代碼生成器就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。