MybatisPlus 自定義.vm模板的生成
官方手冊(cè)
Mybatis-Plus:
依賴(lài)
<!--引入MybatisPlus--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.3.1</version> </dependency> <!--代碼生成器--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.3.1</version> </dependency> <!--代碼生成器:模板引擎依賴(lài) Velocity--> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency>
代碼生成器配置
package com.xin.sbvms.utils; import com.baomidou.mybatisplus.generator.FastAutoGenerator; import com.baomidou.mybatisplus.generator.config.OutputFile; import com.baomidou.mybatisplus.generator.config.rules.DbColumnType; import java.sql.Types; import java.util.Collections; /** * @author WangXin * @description MyBatis-Plus代碼生成器 * @date 2024/03/17 22:02 **/ public class CodeGenerator { public static void main(String[] args) { mpGenerator(); } private static void mpGenerator() { FastAutoGenerator.create("jdbc:mysql://localhost:3306/sbvms?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai", "root", "123456") .globalConfig(builder -> { builder.author("WangXin") // 設(shè)置作者 // .enableSwagger() // 開(kāi)啟 swagger 模式 .outputDir("D:\\Code\\Java\\SBV-MS\\src\\main\\java\\"); // 指定輸出目錄 }) .dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> { int typeCode = metaInfo.getJdbcType().TYPE_CODE; if (typeCode == Types.SMALLINT) { // 自定義類(lèi)型轉(zhuǎn)換 return DbColumnType.INTEGER; } return typeRegistry.getColumnType(metaInfo); })) .packageConfig(builder -> { builder.parent("com.xin.sbvms") // 設(shè)置父包名 .moduleName(null) // 設(shè)置父包模塊名 .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\Code\\Java\\SBV-MS\\src\\main\\resources\\mapper\\")); // 設(shè)置mapperXml生成路徑 }) .strategyConfig(builder -> { builder.entityBuilder().enableLombok(); // 開(kāi)啟lombok功能 builder.entityBuilder().enableFileOverride(); // 覆蓋已生成文件 builder.controllerBuilder().enableFileOverride(). enableRestStyle(); // 開(kāi)啟Rest風(fēng)格 builder.serviceBuilder().enableFileOverride(); builder.mapperBuilder().enableFileOverride(); builder.addInclude("sys_user") // 設(shè)置需要生成的表名 .addTablePrefix("t_", "sys_"); // 設(shè)置過(guò)濾表前綴 }) .templateConfig(builder -> { builder.controller("/templates/myController.java") // 指定自定義模板路徑,注意不要帶上.ftl/.vm, 會(huì)根據(jù)使用的模板引擎自動(dòng)識(shí)別 .build(); // 指定模板 }) // .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默認(rèn)的是Velocity引擎模板 .execute(); } }
controller模板
- 模板存放路徑:resources/templates/myController.java.vm
- 包名:${package.Entity}
- 類(lèi)名:${entity} 如 User
- 表面:${table.entityPath} 如 user
package ${package.Controller}; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import ${package.Service}.${table.serviceName}; import ${package.Entity}.${entity}; #if(${restControllerStyle}) import org.springframework.web.bind.annotation.RestController; #else import org.springframework.stereotype.Controller; #end #if(${superControllerClassPackage}) import ${superControllerClassPackage}; #end /** * $!{table.comment} 前端控制器 * * @author ${author} * @since ${date} */ #if(${restControllerStyle}) @RestController #else @Controller #end @RequestMapping("#if(${package.ModuleName})/${package.ModuleName}#end/#if(${controllerMappingHyphenStyle})${controllerMappingHyphen}#else${table.entityPath}#end") #if(${kotlin}) class ${table.controllerName}#if(${superControllerClass}) : ${superControllerClass}()#end #else #if(${superControllerClass}) public class ${table.controllerName} extends ${superControllerClass} { #else public class ${table.controllerName} { #end @Resource private ${table.serviceName} ${table.entityPath}Service; // 新增或者更新 @PostMapping("/add") public boolean save(@RequestBody ${entity} ${table.entityPath}){ return ${table.entityPath}Service.saveOrUpdate(${table.entityPath}); } @DeleteMapping("/{id}") public Boolean delete(@PathVariable Integer id){ return ${table.entityPath}Service.removeById(id); } @PostMapping("/del/batch") public boolean deleteBatch(@RequestBody List<Integer> ids){ return ${table.entityPath}Service.removeByIds(ids); } @GetMapping public List<${entity}> findAll(){ return ${table.entityPath}Service.list(); } @GetMapping("/{id}") public ${entity} findOne(@PathVariable Integer id){ return ${table.entityPath}Service.getById(id); } @GetMapping("/page") public Page<${entity}> findPage(@RequestParam Integer pageNum,@RequestParam Integer pageSize){ QueryWrapper<User> queryWrapper=new QueryWrapper<>(); queryWrapper.orderByDesc("id"); return ${table.entityPath}Service.page(new Page<>(pageNum,pageSize),queryWrapper); } } #end
Bug
自定義controller.java.vm 不生效
在生成器代碼【CodeGenerator】中添加下面代碼,引入自定義模板【myController.java.vm】
.templateConfig(builder -> { builder.controller("/templates/myController.java") // 指定自定義模板路徑,注意不要帶上.ftl/.vm, 會(huì)根據(jù)使用的模板引擎自動(dòng)識(shí)別 .build(); // 指定模板 })
到此這篇關(guān)于MybatisPlus 自定義.vm模板的生成的文章就介紹到這了,更多相關(guān)MybatisPlus 自定義.vm模板內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot如何接收復(fù)雜參數(shù)(同時(shí)接收J(rèn)SON與文件)
文章介紹了在Spring Boot中同時(shí)處理JSON和文件上傳時(shí)使用`@RequestPart`注解的方法,`@RequestPart`可以接收多種格式的參數(shù),包括JSON和文件,并且可以作為`multipart/form-data`格式中的key2025-02-02Springboot集成JSR303參數(shù)校驗(yàn)的方法實(shí)現(xiàn)
這篇文章主要介紹了Springboot集成JSR303參數(shù)校驗(yàn)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09Java基于jeeplus vue實(shí)現(xiàn)簡(jiǎn)單工作流過(guò)程圖解
這篇文章主要介紹了Java基于jeeplus vue實(shí)現(xiàn)簡(jiǎn)單工作流過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹
這篇文章主要介紹了Java設(shè)計(jì)模式之備忘錄模式(Memento模式)介紹,memento是一個(gè)保存另外一個(gè)對(duì)象內(nèi)部狀態(tài)拷貝的對(duì)象,這樣以后就可以將該對(duì)象恢復(fù)到原先保存的狀態(tài),需要的朋友可以參考下2015-03-03java web實(shí)現(xiàn)郵箱發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了java web實(shí)現(xiàn)郵箱發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05elasticsearch源碼分析index?action實(shí)現(xiàn)方式
這篇文章主要為大家介紹了elasticsearch源碼分析index?action實(shí)現(xiàn)方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04