Commit 5442f6522e5e25fc2472626470bb7877ddffe06f
1 parent
2210ed5c
整理 vm 模板
提交 test 生成的示例
Showing
25 changed files
with
412 additions
and
246 deletions
ruoyi-generator/src/main/java/com/ruoyi/generator/controller/GenController.java
| @@ -5,6 +5,7 @@ import java.util.HashMap; | @@ -5,6 +5,7 @@ import java.util.HashMap; | ||
| 5 | import java.util.List; | 5 | import java.util.List; |
| 6 | import java.util.Map; | 6 | import java.util.Map; |
| 7 | import javax.servlet.http.HttpServletResponse; | 7 | import javax.servlet.http.HttpServletResponse; |
| 8 | + | ||
| 8 | import org.apache.commons.io.IOUtils; | 9 | import org.apache.commons.io.IOUtils; |
| 9 | import org.springframework.beans.factory.annotation.Autowired; | 10 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | import org.springframework.security.access.prepost.PreAuthorize; | 11 | import org.springframework.security.access.prepost.PreAuthorize; |
| @@ -30,13 +31,12 @@ import com.ruoyi.generator.service.IGenTableService; | @@ -30,13 +31,12 @@ import com.ruoyi.generator.service.IGenTableService; | ||
| 30 | 31 | ||
| 31 | /** | 32 | /** |
| 32 | * 代码生成 操作处理 | 33 | * 代码生成 操作处理 |
| 33 | - * | 34 | + * |
| 34 | * @author ruoyi | 35 | * @author ruoyi |
| 35 | */ | 36 | */ |
| 36 | @RestController | 37 | @RestController |
| 37 | @RequestMapping("/tool/gen") | 38 | @RequestMapping("/tool/gen") |
| 38 | -public class GenController extends BaseController | ||
| 39 | -{ | 39 | +public class GenController extends BaseController { |
| 40 | @Autowired | 40 | @Autowired |
| 41 | private IGenTableService genTableService; | 41 | private IGenTableService genTableService; |
| 42 | 42 | ||
| @@ -48,8 +48,7 @@ public class GenController extends BaseController | @@ -48,8 +48,7 @@ public class GenController extends BaseController | ||
| 48 | */ | 48 | */ |
| 49 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") | 49 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") |
| 50 | @GetMapping("/list") | 50 | @GetMapping("/list") |
| 51 | - public TableDataInfo genList(GenTable genTable) | ||
| 52 | - { | 51 | + public TableDataInfo genList(GenTable genTable) { |
| 53 | startPage(); | 52 | startPage(); |
| 54 | List<GenTable> list = genTableService.selectGenTableList(genTable); | 53 | List<GenTable> list = genTableService.selectGenTableList(genTable); |
| 55 | return getDataTable(list); | 54 | return getDataTable(list); |
| @@ -60,8 +59,7 @@ public class GenController extends BaseController | @@ -60,8 +59,7 @@ public class GenController extends BaseController | ||
| 60 | */ | 59 | */ |
| 61 | @PreAuthorize("@ss.hasPermi('tool:gen:query')") | 60 | @PreAuthorize("@ss.hasPermi('tool:gen:query')") |
| 62 | @GetMapping(value = "/{talbleId}") | 61 | @GetMapping(value = "/{talbleId}") |
| 63 | - public AjaxResult getInfo(@PathVariable Long talbleId) | ||
| 64 | - { | 62 | + public AjaxResult getInfo(@PathVariable Long talbleId) { |
| 65 | GenTable table = genTableService.selectGenTableById(talbleId); | 63 | GenTable table = genTableService.selectGenTableById(talbleId); |
| 66 | List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(talbleId); | 64 | List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(talbleId); |
| 67 | Map<String, Object> map = new HashMap<String, Object>(); | 65 | Map<String, Object> map = new HashMap<String, Object>(); |
| @@ -75,8 +73,7 @@ public class GenController extends BaseController | @@ -75,8 +73,7 @@ public class GenController extends BaseController | ||
| 75 | */ | 73 | */ |
| 76 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") | 74 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") |
| 77 | @GetMapping("/db/list") | 75 | @GetMapping("/db/list") |
| 78 | - public TableDataInfo dataList(GenTable genTable) | ||
| 79 | - { | 76 | + public TableDataInfo dataList(GenTable genTable) { |
| 80 | startPage(); | 77 | startPage(); |
| 81 | List<GenTable> list = genTableService.selectDbTableList(genTable); | 78 | List<GenTable> list = genTableService.selectDbTableList(genTable); |
| 82 | return getDataTable(list); | 79 | return getDataTable(list); |
| @@ -87,8 +84,7 @@ public class GenController extends BaseController | @@ -87,8 +84,7 @@ public class GenController extends BaseController | ||
| 87 | */ | 84 | */ |
| 88 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") | 85 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") |
| 89 | @GetMapping(value = "/column/{talbleId}") | 86 | @GetMapping(value = "/column/{talbleId}") |
| 90 | - public TableDataInfo columnList(Long tableId) | ||
| 91 | - { | 87 | + public TableDataInfo columnList(Long tableId) { |
| 92 | TableDataInfo dataInfo = new TableDataInfo(); | 88 | TableDataInfo dataInfo = new TableDataInfo(); |
| 93 | List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); | 89 | List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); |
| 94 | dataInfo.setRows(list); | 90 | dataInfo.setRows(list); |
| @@ -102,8 +98,7 @@ public class GenController extends BaseController | @@ -102,8 +98,7 @@ public class GenController extends BaseController | ||
| 102 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") | 98 | @PreAuthorize("@ss.hasPermi('tool:gen:list')") |
| 103 | @Log(title = "代码生成", businessType = BusinessType.IMPORT) | 99 | @Log(title = "代码生成", businessType = BusinessType.IMPORT) |
| 104 | @PostMapping("/importTable") | 100 | @PostMapping("/importTable") |
| 105 | - public AjaxResult importTableSave(String tables) | ||
| 106 | - { | 101 | + public AjaxResult importTableSave(String tables) { |
| 107 | String[] tableNames = Convert.toStrArray(tables); | 102 | String[] tableNames = Convert.toStrArray(tables); |
| 108 | // 查询表信息 | 103 | // 查询表信息 |
| 109 | List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames); | 104 | List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames); |
| @@ -117,8 +112,7 @@ public class GenController extends BaseController | @@ -117,8 +112,7 @@ public class GenController extends BaseController | ||
| 117 | @PreAuthorize("@ss.hasPermi('tool:gen:edit')") | 112 | @PreAuthorize("@ss.hasPermi('tool:gen:edit')") |
| 118 | @Log(title = "代码生成", businessType = BusinessType.UPDATE) | 113 | @Log(title = "代码生成", businessType = BusinessType.UPDATE) |
| 119 | @PutMapping | 114 | @PutMapping |
| 120 | - public AjaxResult editSave(@Validated @RequestBody GenTable genTable) | ||
| 121 | - { | 115 | + public AjaxResult editSave(@Validated @RequestBody GenTable genTable) { |
| 122 | genTableService.validateEdit(genTable); | 116 | genTableService.validateEdit(genTable); |
| 123 | genTableService.updateGenTable(genTable); | 117 | genTableService.updateGenTable(genTable); |
| 124 | return AjaxResult.success(); | 118 | return AjaxResult.success(); |
| @@ -130,8 +124,7 @@ public class GenController extends BaseController | @@ -130,8 +124,7 @@ public class GenController extends BaseController | ||
| 130 | @PreAuthorize("@ss.hasPermi('tool:gen:remove')") | 124 | @PreAuthorize("@ss.hasPermi('tool:gen:remove')") |
| 131 | @Log(title = "代码生成", businessType = BusinessType.DELETE) | 125 | @Log(title = "代码生成", businessType = BusinessType.DELETE) |
| 132 | @DeleteMapping("/{tableIds}") | 126 | @DeleteMapping("/{tableIds}") |
| 133 | - public AjaxResult remove(@PathVariable Long[] tableIds) | ||
| 134 | - { | 127 | + public AjaxResult remove(@PathVariable Long[] tableIds) { |
| 135 | genTableService.deleteGenTableByIds(tableIds); | 128 | genTableService.deleteGenTableByIds(tableIds); |
| 136 | return AjaxResult.success(); | 129 | return AjaxResult.success(); |
| 137 | } | 130 | } |
| @@ -141,8 +134,7 @@ public class GenController extends BaseController | @@ -141,8 +134,7 @@ public class GenController extends BaseController | ||
| 141 | */ | 134 | */ |
| 142 | @PreAuthorize("@ss.hasPermi('tool:gen:preview')") | 135 | @PreAuthorize("@ss.hasPermi('tool:gen:preview')") |
| 143 | @GetMapping("/preview/{tableId}") | 136 | @GetMapping("/preview/{tableId}") |
| 144 | - public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException | ||
| 145 | - { | 137 | + public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException { |
| 146 | Map<String, String> dataMap = genTableService.previewCode(tableId); | 138 | Map<String, String> dataMap = genTableService.previewCode(tableId); |
| 147 | return AjaxResult.success(dataMap); | 139 | return AjaxResult.success(dataMap); |
| 148 | } | 140 | } |
| @@ -153,8 +145,7 @@ public class GenController extends BaseController | @@ -153,8 +145,7 @@ public class GenController extends BaseController | ||
| 153 | @PreAuthorize("@ss.hasPermi('tool:gen:code')") | 145 | @PreAuthorize("@ss.hasPermi('tool:gen:code')") |
| 154 | @Log(title = "代码生成", businessType = BusinessType.GENCODE) | 146 | @Log(title = "代码生成", businessType = BusinessType.GENCODE) |
| 155 | @GetMapping("/download/{tableName}") | 147 | @GetMapping("/download/{tableName}") |
| 156 | - public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException | ||
| 157 | - { | 148 | + public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException { |
| 158 | byte[] data = genTableService.downloadCode(tableName); | 149 | byte[] data = genTableService.downloadCode(tableName); |
| 159 | genCode(response, data); | 150 | genCode(response, data); |
| 160 | } | 151 | } |
| @@ -165,8 +156,7 @@ public class GenController extends BaseController | @@ -165,8 +156,7 @@ public class GenController extends BaseController | ||
| 165 | @PreAuthorize("@ss.hasPermi('tool:gen:code')") | 156 | @PreAuthorize("@ss.hasPermi('tool:gen:code')") |
| 166 | @Log(title = "代码生成", businessType = BusinessType.GENCODE) | 157 | @Log(title = "代码生成", businessType = BusinessType.GENCODE) |
| 167 | @GetMapping("/genCode/{tableName}") | 158 | @GetMapping("/genCode/{tableName}") |
| 168 | - public AjaxResult genCode(@PathVariable("tableName") String tableName) | ||
| 169 | - { | 159 | + public AjaxResult genCode(@PathVariable("tableName") String tableName) { |
| 170 | genTableService.generatorCode(tableName); | 160 | genTableService.generatorCode(tableName); |
| 171 | return AjaxResult.success(); | 161 | return AjaxResult.success(); |
| 172 | } | 162 | } |
| @@ -177,8 +167,7 @@ public class GenController extends BaseController | @@ -177,8 +167,7 @@ public class GenController extends BaseController | ||
| 177 | @PreAuthorize("@ss.hasPermi('tool:gen:edit')") | 167 | @PreAuthorize("@ss.hasPermi('tool:gen:edit')") |
| 178 | @Log(title = "代码生成", businessType = BusinessType.UPDATE) | 168 | @Log(title = "代码生成", businessType = BusinessType.UPDATE) |
| 179 | @GetMapping("/synchDb/{tableName}") | 169 | @GetMapping("/synchDb/{tableName}") |
| 180 | - public AjaxResult synchDb(@PathVariable("tableName") String tableName) | ||
| 181 | - { | 170 | + public AjaxResult synchDb(@PathVariable("tableName") String tableName) { |
| 182 | genTableService.synchDb(tableName); | 171 | genTableService.synchDb(tableName); |
| 183 | return AjaxResult.success(); | 172 | return AjaxResult.success(); |
| 184 | } | 173 | } |
| @@ -189,8 +178,7 @@ public class GenController extends BaseController | @@ -189,8 +178,7 @@ public class GenController extends BaseController | ||
| 189 | @PreAuthorize("@ss.hasPermi('tool:gen:code')") | 178 | @PreAuthorize("@ss.hasPermi('tool:gen:code')") |
| 190 | @Log(title = "代码生成", businessType = BusinessType.GENCODE) | 179 | @Log(title = "代码生成", businessType = BusinessType.GENCODE) |
| 191 | @GetMapping("/batchGenCode") | 180 | @GetMapping("/batchGenCode") |
| 192 | - public void batchGenCode(HttpServletResponse response, String tables) throws IOException | ||
| 193 | - { | 181 | + public void batchGenCode(HttpServletResponse response, String tables) throws IOException { |
| 194 | String[] tableNames = Convert.toStrArray(tables); | 182 | String[] tableNames = Convert.toStrArray(tables); |
| 195 | byte[] data = genTableService.downloadCode(tableNames); | 183 | byte[] data = genTableService.downloadCode(tableNames); |
| 196 | genCode(response, data); | 184 | genCode(response, data); |
| @@ -199,8 +187,7 @@ public class GenController extends BaseController | @@ -199,8 +187,7 @@ public class GenController extends BaseController | ||
| 199 | /** | 187 | /** |
| 200 | * 生成zip文件 | 188 | * 生成zip文件 |
| 201 | */ | 189 | */ |
| 202 | - private void genCode(HttpServletResponse response, byte[] data) throws IOException | ||
| 203 | - { | 190 | + private void genCode(HttpServletResponse response, byte[] data) throws IOException { |
| 204 | response.reset(); | 191 | response.reset(); |
| 205 | response.addHeader("Access-Control-Allow-Origin", "*"); | 192 | response.addHeader("Access-Control-Allow-Origin", "*"); |
| 206 | response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); | 193 | response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); |
| @@ -209,4 +196,4 @@ public class GenController extends BaseController | @@ -209,4 +196,4 @@ public class GenController extends BaseController | ||
| 209 | response.setContentType("application/octet-stream; charset=UTF-8"); | 196 | response.setContentType("application/octet-stream; charset=UTF-8"); |
| 210 | IOUtils.write(data, response.getOutputStream()); | 197 | IOUtils.write(data, response.getOutputStream()); |
| 211 | } | 198 | } |
| 212 | -} | ||
| 213 | \ No newline at end of file | 199 | \ No newline at end of file |
| 200 | +} |
ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTable.java
| @@ -23,11 +23,6 @@ public class GenTable extends BaseEntity { | @@ -23,11 +23,6 @@ public class GenTable extends BaseEntity { | ||
| 23 | private String packageName; | 23 | private String packageName; |
| 24 | 24 | ||
| 25 | /** | 25 | /** |
| 26 | - * 主键信息 | ||
| 27 | - */ | ||
| 28 | - private GenTableColumn pkColumn; | ||
| 29 | - | ||
| 30 | - /** | ||
| 31 | * 其它生成选项 | 26 | * 其它生成选项 |
| 32 | */ | 27 | */ |
| 33 | private String options; | 28 | private String options; |
| @@ -57,31 +52,4 @@ public class GenTable extends BaseEntity { | @@ -57,31 +52,4 @@ public class GenTable extends BaseEntity { | ||
| 57 | */ | 52 | */ |
| 58 | private String parentMenuName; | 53 | private String parentMenuName; |
| 59 | 54 | ||
| 60 | - public boolean isTree() { | ||
| 61 | - return isTree(this.tplCategory); | ||
| 62 | - } | ||
| 63 | - | ||
| 64 | - public static boolean isTree(String tplCategory) { | ||
| 65 | - return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); | ||
| 66 | - } | ||
| 67 | - | ||
| 68 | - public boolean isCrud() { | ||
| 69 | - return isCrud(this.tplCategory); | ||
| 70 | - } | ||
| 71 | - | ||
| 72 | - public static boolean isCrud(String tplCategory) { | ||
| 73 | - return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); | ||
| 74 | - } | ||
| 75 | - | ||
| 76 | - public boolean isSuperColumn(String javaField) { | ||
| 77 | - return isSuperColumn(this.tplCategory, javaField); | ||
| 78 | - } | ||
| 79 | - | ||
| 80 | - public static boolean isSuperColumn(String tplCategory, String javaField) { | ||
| 81 | - if (isTree(tplCategory)) { | ||
| 82 | - return StringUtils.equalsAnyIgnoreCase(javaField, | ||
| 83 | - ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); | ||
| 84 | - } | ||
| 85 | - return StringUtils.equalsAnyIgnoreCase(javaField, GenConstants.BASE_ENTITY); | ||
| 86 | - } | ||
| 87 | } | 55 | } |
ruoyi-generator/src/main/resources/vm/java/service.java.vm deleted
| 1 | -package ${packageName}.service; | ||
| 2 | - | ||
| 3 | -import java.util.List; | ||
| 4 | -import ${packageName}.domain.${ClassName}; | ||
| 5 | - | ||
| 6 | -/** | ||
| 7 | - * ${functionName}Service接口 | ||
| 8 | - * | ||
| 9 | - * @author ${author} | ||
| 10 | - * @date ${datetime} | ||
| 11 | - */ | ||
| 12 | -public interface I${ClassName}Service | ||
| 13 | -{ | ||
| 14 | - /** | ||
| 15 | - * 查询${functionName} | ||
| 16 | - * | ||
| 17 | - * @param ${pkColumn.javaField} ${functionName}ID | ||
| 18 | - * @return ${functionName} | ||
| 19 | - */ | ||
| 20 | - public ${ClassName} select${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}); | ||
| 21 | - | ||
| 22 | - /** | ||
| 23 | - * 查询${functionName}列表 | ||
| 24 | - * | ||
| 25 | - * @param ${className} ${functionName} | ||
| 26 | - * @return ${functionName}集合 | ||
| 27 | - */ | ||
| 28 | - public List<${ClassName}> select${ClassName}List(${ClassName} ${className}); | ||
| 29 | - | ||
| 30 | - /** | ||
| 31 | - * 新增${functionName} | ||
| 32 | - * | ||
| 33 | - * @param ${className} ${functionName} | ||
| 34 | - * @return 结果 | ||
| 35 | - */ | ||
| 36 | - public int insert${ClassName}(${ClassName} ${className}); | ||
| 37 | - | ||
| 38 | - /** | ||
| 39 | - * 修改${functionName} | ||
| 40 | - * | ||
| 41 | - * @param ${className} ${functionName} | ||
| 42 | - * @return 结果 | ||
| 43 | - */ | ||
| 44 | - public int update${ClassName}(${ClassName} ${className}); | ||
| 45 | - | ||
| 46 | - /** | ||
| 47 | - * 批量删除${functionName} | ||
| 48 | - * | ||
| 49 | - * @param ${pkColumn.javaField}s 需要删除的${functionName}ID | ||
| 50 | - * @return 结果 | ||
| 51 | - */ | ||
| 52 | - public int delete${ClassName}ByIds(${pkColumn.javaType}[] ${pkColumn.javaField}s); | ||
| 53 | - | ||
| 54 | - /** | ||
| 55 | - * 删除${functionName}信息 | ||
| 56 | - * | ||
| 57 | - * @param ${pkColumn.javaField} ${functionName}ID | ||
| 58 | - * @return 结果 | ||
| 59 | - */ | ||
| 60 | - public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}); | ||
| 61 | -} |
ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm deleted
| 1 | -<?xml version="1.0" encoding="UTF-8" ?> | ||
| 2 | -<!DOCTYPE mapper | ||
| 3 | -PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||
| 4 | -"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||
| 5 | -<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> | ||
| 6 | - | ||
| 7 | - <resultMap type="${ClassName}" id="${ClassName}Result"> | ||
| 8 | -#foreach ($column in $columns) | ||
| 9 | - <result property="${column.javaField}" column="${column.columnName}" /> | ||
| 10 | -#end | ||
| 11 | - </resultMap> | ||
| 12 | - | ||
| 13 | - <sql id="select${ClassName}Vo"> | ||
| 14 | - select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end from ${tableName} | ||
| 15 | - </sql> | ||
| 16 | - | ||
| 17 | - <select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result"> | ||
| 18 | - <include refid="select${ClassName}Vo"/> | ||
| 19 | - <where> | ||
| 20 | -#foreach($column in $columns) | ||
| 21 | -#set($queryType=$column.queryType) | ||
| 22 | -#set($javaField=$column.javaField) | ||
| 23 | -#set($javaType=$column.javaType) | ||
| 24 | -#set($columnName=$column.columnName) | ||
| 25 | -#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) | ||
| 26 | -#if($column.query) | ||
| 27 | -#if($column.queryType == "EQ") | ||
| 28 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if> | ||
| 29 | -#elseif($queryType == "NE") | ||
| 30 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if> | ||
| 31 | -#elseif($queryType == "GT") | ||
| 32 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName > #{$javaField}</if> | ||
| 33 | -#elseif($queryType == "GTE") | ||
| 34 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if> | ||
| 35 | -#elseif($queryType == "LT") | ||
| 36 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if> | ||
| 37 | -#elseif($queryType == "LTE") | ||
| 38 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$javaField}</if> | ||
| 39 | -#elseif($queryType == "LIKE") | ||
| 40 | - <if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if> | ||
| 41 | -#elseif($queryType == "BETWEEN") | ||
| 42 | - <if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if> | ||
| 43 | -#end | ||
| 44 | -#end | ||
| 45 | -#end | ||
| 46 | - </where> | ||
| 47 | - </select> | ||
| 48 | - | ||
| 49 | - <select id="select${ClassName}ById" parameterType="${pkColumn.javaType}" resultMap="${ClassName}Result"> | ||
| 50 | - <include refid="select${ClassName}Vo"/> | ||
| 51 | - where ${pkColumn.columnName} = #{${pkColumn.javaField}} | ||
| 52 | - </select> | ||
| 53 | - | ||
| 54 | - <insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end> | ||
| 55 | - insert into ${tableName} | ||
| 56 | - <trim prefix="(" suffix=")" suffixOverrides=","> | ||
| 57 | -#foreach($column in $columns) | ||
| 58 | -#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) | ||
| 59 | - <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if> | ||
| 60 | -#end | ||
| 61 | -#end | ||
| 62 | - </trim> | ||
| 63 | - <trim prefix="values (" suffix=")" suffixOverrides=","> | ||
| 64 | -#foreach($column in $columns) | ||
| 65 | -#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment) | ||
| 66 | - <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if> | ||
| 67 | -#end | ||
| 68 | -#end | ||
| 69 | - </trim> | ||
| 70 | - </insert> | ||
| 71 | - | ||
| 72 | - <update id="update${ClassName}" parameterType="${ClassName}"> | ||
| 73 | - update ${tableName} | ||
| 74 | - <trim prefix="SET" suffixOverrides=","> | ||
| 75 | -#foreach($column in $columns) | ||
| 76 | -#if($column.columnName != $pkColumn.columnName) | ||
| 77 | - <if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if> | ||
| 78 | -#end | ||
| 79 | -#end | ||
| 80 | - </trim> | ||
| 81 | - where ${pkColumn.columnName} = #{${pkColumn.javaField}} | ||
| 82 | - </update> | ||
| 83 | - | ||
| 84 | - <delete id="delete${ClassName}ById" parameterType="${pkColumn.javaType}"> | ||
| 85 | - delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}} | ||
| 86 | - </delete> | ||
| 87 | - | ||
| 88 | - <delete id="delete${ClassName}ByIds" parameterType="String"> | ||
| 89 | - delete from ${tableName} where ${pkColumn.columnName} in | ||
| 90 | - <foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")"> | ||
| 91 | - #{${pkColumn.javaField}} | ||
| 92 | - </foreach> | ||
| 93 | - </delete> | ||
| 94 | - | ||
| 95 | -</mapper> | ||
| 96 | \ No newline at end of file | 0 | \ No newline at end of file |
src/main/java/cn/iocoder/dashboard/modules/infra/convert/package-info.java deleted
| 1 | -package cn.iocoder.dashboard.modules.infra.convert; |
src/main/java/cn/iocoder/dashboard/modules/system/controller/test/package-info.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.controller.test; |
src/main/java/cn/iocoder/dashboard/modules/system/controller/test/vo/SysTestDemoBaseVO.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.controller.test.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModelProperty; | ||
| 4 | +import lombok.Data; | ||
| 5 | + | ||
| 6 | +import javax.validation.constraints.NotNull; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | +* 字典类型 Base VO,提供给添加、修改、详细的子 VO 使用 | ||
| 10 | +* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 | ||
| 11 | +*/ | ||
| 12 | +@Data | ||
| 13 | +public class SysTestDemoBaseVO { | ||
| 14 | + | ||
| 15 | + @ApiModelProperty(value = "字典名称", required = true, example = "性别额") | ||
| 16 | + @NotNull(message = "字典名称不能为空") | ||
| 17 | + private String name; | ||
| 18 | + | ||
| 19 | + @ApiModelProperty(value = "字典类型", required = true, example = "sys_sex") | ||
| 20 | + @NotNull(message = "字典类型不能为空") | ||
| 21 | + private String dictType; | ||
| 22 | + | ||
| 23 | + @ApiModelProperty(value = "状态", required = true, example = "1") | ||
| 24 | + @NotNull(message = "状态不能为空") | ||
| 25 | + private Integer status; | ||
| 26 | + | ||
| 27 | + @ApiModelProperty(value = "备注", example = "我是备注") | ||
| 28 | + private String remark; | ||
| 29 | + | ||
| 30 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/controller/test/vo/SysTestDemoCreateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.controller.test.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import lombok.Data; | ||
| 5 | +import lombok.EqualsAndHashCode; | ||
| 6 | +import lombok.ToString; | ||
| 7 | + | ||
| 8 | +@ApiModel("字典类型创建 Request VO") | ||
| 9 | +@Data | ||
| 10 | +@EqualsAndHashCode(callSuper = true) | ||
| 11 | +@ToString(callSuper = true) | ||
| 12 | +public class SysTestDemoCreateReqVO extends SysTestDemoBaseVO { | ||
| 13 | + | ||
| 14 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/controller/test/vo/SysTestDemoPageReqVO.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.controller.test.vo; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.dashboard.common.pojo.PageParam; | ||
| 4 | +import io.swagger.annotations.ApiModel; | ||
| 5 | +import io.swagger.annotations.ApiModelProperty; | ||
| 6 | +import lombok.Data; | ||
| 7 | +import lombok.EqualsAndHashCode; | ||
| 8 | +import lombok.ToString; | ||
| 9 | +import org.springframework.format.annotation.DateTimeFormat; | ||
| 10 | + | ||
| 11 | +import java.util.Date; | ||
| 12 | + | ||
| 13 | +import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | ||
| 14 | + | ||
| 15 | +@ApiModel("字典类型分页 Request VO") | ||
| 16 | +@Data | ||
| 17 | +@EqualsAndHashCode(callSuper = true) | ||
| 18 | +@ToString(callSuper = true) | ||
| 19 | +public class SysTestDemoPageReqVO extends PageParam { | ||
| 20 | + | ||
| 21 | + @ApiModelProperty(value = "字典名称", example = "性别额") | ||
| 22 | + private String name; | ||
| 23 | + | ||
| 24 | + @ApiModelProperty(value = "字典类型", example = "sys_sex") | ||
| 25 | + private String dictType; | ||
| 26 | + | ||
| 27 | + @ApiModelProperty(value = "状态", example = "1") | ||
| 28 | + private Integer status; | ||
| 29 | + | ||
| 30 | + @ApiModelProperty(value = "备注", example = "我是备注") | ||
| 31 | + private String remark; | ||
| 32 | + | ||
| 33 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 34 | + @ApiModelProperty(value = "开始创建时间") | ||
| 35 | + private Date beginCreateTime; | ||
| 36 | + | ||
| 37 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | ||
| 38 | + @ApiModelProperty(value = "结束创建时间") | ||
| 39 | + private Date endCreateTime; | ||
| 40 | + | ||
| 41 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/controller/test/vo/SysTestDemoRespVO.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.controller.test.vo; | ||
| 2 | + | ||
| 3 | +import lombok.*; | ||
| 4 | +import java.util.*; | ||
| 5 | +import io.swagger.annotations.*; | ||
| 6 | + | ||
| 7 | +@ApiModel("字典类型 Response VO") | ||
| 8 | +@Data | ||
| 9 | +@EqualsAndHashCode(callSuper = true) | ||
| 10 | +@ToString(callSuper = true) | ||
| 11 | +public class SysTestDemoRespVO extends SysTestDemoBaseVO { | ||
| 12 | + | ||
| 13 | + @ApiModelProperty(value = "字典主键", required = true, example = "1") | ||
| 14 | + private Long id; | ||
| 15 | + | ||
| 16 | + @ApiModelProperty(value = "创建时间", required = true) | ||
| 17 | + private Date createTime; | ||
| 18 | + | ||
| 19 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/controller/test/vo/SysTestDemoUpdateReqVO.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.controller.test.vo; | ||
| 2 | + | ||
| 3 | +import io.swagger.annotations.ApiModel; | ||
| 4 | +import io.swagger.annotations.ApiModelProperty; | ||
| 5 | +import lombok.Data; | ||
| 6 | +import lombok.EqualsAndHashCode; | ||
| 7 | +import lombok.ToString; | ||
| 8 | + | ||
| 9 | +import javax.validation.constraints.NotNull; | ||
| 10 | + | ||
| 11 | +@ApiModel("字典类型更新 Request VO") | ||
| 12 | +@Data | ||
| 13 | +@EqualsAndHashCode(callSuper = true) | ||
| 14 | +@ToString(callSuper = true) | ||
| 15 | +public class SysTestDemoUpdateReqVO extends SysTestDemoBaseVO { | ||
| 16 | + | ||
| 17 | + @ApiModelProperty(value = "字典主键", required = true, example = "1") | ||
| 18 | + @NotNull(message = "字典主键不能为空") | ||
| 19 | + private Long id; | ||
| 20 | + | ||
| 21 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dao/test/SysTestDemoMapper.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.dal.mysql.dao.test; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.dashboard.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; | ||
| 5 | +import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; | ||
| 6 | +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.test.SysTestDemoDO; | ||
| 7 | +import org.apache.ibatis.annotations.Mapper; | ||
| 8 | +import cn.iocoder.dashboard.modules.system.controller.test.vo.SysTestDemoPageReqVO; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | +* 字典类型 Mapper | ||
| 12 | +* | ||
| 13 | +* @author 芋艿 | ||
| 14 | +*/ | ||
| 15 | +@Mapper | ||
| 16 | +public interface SysTestDemoMapper extends BaseMapperX<SysTestDemoDO> { | ||
| 17 | + | ||
| 18 | + default PageResult<SysTestDemoDO> selectPage(SysTestDemoPageReqVO reqVO) { | ||
| 19 | + return selectPage(reqVO, new QueryWrapperX<SysTestDemoDO>() | ||
| 20 | + .likeIfPresent("name", reqVO.getName()) | ||
| 21 | + .eqIfPresent("dict_type", reqVO.getDictType()) | ||
| 22 | + .eqIfPresent("status", reqVO.getStatus()) | ||
| 23 | + .eqIfPresent("remark", reqVO.getRemark()) | ||
| 24 | + .betweenIfPresent("create_time", reqVO.getBeginCreateTime(), reqVO.getEndCreateTime()) | ||
| 25 | + ); | ||
| 26 | + } | ||
| 27 | + | ||
| 28 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/dal/mysql/dataobject/test/SysTestDemoDO.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.test; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | ||
| 4 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
| 5 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
| 6 | +import lombok.*; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | +* 字典类型 DO | ||
| 10 | +* | ||
| 11 | +* @author 芋艿 | ||
| 12 | +*/ | ||
| 13 | +@TableName("sys_test_demo") | ||
| 14 | +@Data | ||
| 15 | +@EqualsAndHashCode(callSuper = true) | ||
| 16 | +@ToString(callSuper = true) | ||
| 17 | +@Builder | ||
| 18 | +@NoArgsConstructor | ||
| 19 | +@AllArgsConstructor | ||
| 20 | +public class SysTestDemoDO extends BaseDO { | ||
| 21 | + | ||
| 22 | + /** | ||
| 23 | + * 字典主键 | ||
| 24 | + */ | ||
| 25 | + @TableId | ||
| 26 | + private Long id; | ||
| 27 | + /** | ||
| 28 | + * 字典名称 | ||
| 29 | + */ | ||
| 30 | + private String name; | ||
| 31 | + /** | ||
| 32 | + * 字典类型 | ||
| 33 | + */ | ||
| 34 | + private String dictType; | ||
| 35 | + /** | ||
| 36 | + * 状态 | ||
| 37 | + */ | ||
| 38 | + private Integer status; | ||
| 39 | + /** | ||
| 40 | + * 备注 | ||
| 41 | + */ | ||
| 42 | + private String remark; | ||
| 43 | + | ||
| 44 | +} |
src/main/java/cn/iocoder/dashboard/modules/system/service/test/SysTestDemoService.java
0 → 100644
| 1 | +package cn.iocoder.dashboard.modules.system.service.test; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.dashboard.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.dashboard.modules.system.controller.test.vo.SysTestDemoCreateReqVO; | ||
| 5 | +import cn.iocoder.dashboard.modules.system.controller.test.vo.SysTestDemoPageReqVO; | ||
| 6 | +import cn.iocoder.dashboard.modules.system.controller.test.vo.SysTestDemoUpdateReqVO; | ||
| 7 | +import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.test.SysTestDemoDO; | ||
| 8 | + | ||
| 9 | +import javax.validation.Valid; | ||
| 10 | +import java.util.Collection; | ||
| 11 | +import java.util.List; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | +* 字典类型 Service 接口 | ||
| 15 | +* | ||
| 16 | +* @author 芋艿 | ||
| 17 | +*/ | ||
| 18 | +public interface SysTestDemoService { | ||
| 19 | + | ||
| 20 | + /** | ||
| 21 | + * 创建字典类型 | ||
| 22 | + * | ||
| 23 | + * @param createReqVO 创建信息 | ||
| 24 | + * @return 编号 | ||
| 25 | + */ | ||
| 26 | + Long createTestDemo(@Valid SysTestDemoCreateReqVO createReqVO); | ||
| 27 | + | ||
| 28 | + /** | ||
| 29 | + * 更新字典类型 | ||
| 30 | + * | ||
| 31 | + * @param updateReqVO 更新信息 | ||
| 32 | + */ | ||
| 33 | + void updateTestDemo(@Valid SysTestDemoUpdateReqVO updateReqVO); | ||
| 34 | + | ||
| 35 | + /** | ||
| 36 | + * 删除字典类型 | ||
| 37 | + * | ||
| 38 | + * @param id 编号 | ||
| 39 | + */ | ||
| 40 | + void deleteTestDemo(Long id); | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 获得字典类型 | ||
| 44 | + * | ||
| 45 | + * @param id 编号 | ||
| 46 | + * @return 字典类型 | ||
| 47 | + */ | ||
| 48 | + SysTestDemoDO getTestDemo(Long id); | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * 获得字典类型列表 | ||
| 52 | + * | ||
| 53 | + * @param ids 编号 | ||
| 54 | + * @return 字典类型列表 | ||
| 55 | + */ | ||
| 56 | + List<SysTestDemoDO> getTestDemoList(Collection<Long> ids); | ||
| 57 | + | ||
| 58 | + /** | ||
| 59 | + * 获得字典类型分页 | ||
| 60 | + * | ||
| 61 | + * @param pageReqVO 分页查询 | ||
| 62 | + * @return 字典类型分页 | ||
| 63 | + */ | ||
| 64 | + PageResult<SysTestDemoDO> getTestDemoPage(SysTestDemoPageReqVO pageReqVO); | ||
| 65 | + | ||
| 66 | +} |
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenBuilder.java
| @@ -17,6 +17,8 @@ import org.springframework.stereotype.Component; | @@ -17,6 +17,8 @@ import org.springframework.stereotype.Component; | ||
| 17 | import java.math.BigDecimal; | 17 | import java.math.BigDecimal; |
| 18 | import java.util.*; | 18 | import java.util.*; |
| 19 | 19 | ||
| 20 | +import static cn.hutool.core.text.CharSequenceUtil.*; | ||
| 21 | + | ||
| 20 | /** | 22 | /** |
| 21 | * 代码生成器的 Builder,负责: | 23 | * 代码生成器的 Builder,负责: |
| 22 | * 1. 将数据库的表 {@link ToolInformationSchemaTableDO} 定义,构建成 {@link ToolCodegenTableDO} | 24 | * 1. 将数据库的表 {@link ToolInformationSchemaTableDO} 定义,构建成 {@link ToolCodegenTableDO} |
| @@ -26,6 +28,18 @@ import java.util.*; | @@ -26,6 +28,18 @@ import java.util.*; | ||
| 26 | public class ToolCodegenBuilder { | 28 | public class ToolCodegenBuilder { |
| 27 | 29 | ||
| 28 | /** | 30 | /** |
| 31 | + * Module 名字的映射 TODO 后续梳理到配置类 | ||
| 32 | + * | ||
| 33 | + * key:模块的完整名 | ||
| 34 | + * value:模块的缩写名 | ||
| 35 | + */ | ||
| 36 | + private static final Map<String, String> moduleNames = MapUtil.<String, String>builder() | ||
| 37 | + .put("system", "sys") | ||
| 38 | + .put("infra", "inf") | ||
| 39 | + .put("tool", "tool") | ||
| 40 | + .build(); | ||
| 41 | + | ||
| 42 | + /** | ||
| 29 | * 字段名与 {@link ToolCodegenColumnListConditionEnum} 的默认映射 | 43 | * 字段名与 {@link ToolCodegenColumnListConditionEnum} 的默认映射 |
| 30 | * 注意,字段的匹配以后缀的方式 | 44 | * 注意,字段的匹配以后缀的方式 |
| 31 | */ | 45 | */ |
| @@ -93,9 +107,9 @@ public class ToolCodegenBuilder { | @@ -93,9 +107,9 @@ public class ToolCodegenBuilder { | ||
| 93 | CREATE_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | 107 | CREATE_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); |
| 94 | UPDATE_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | 108 | UPDATE_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); |
| 95 | LIST_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | 109 | LIST_OPERATION_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); |
| 96 | - LIST_OPERATION_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是可能需要传递的 | 110 | + LIST_OPERATION_EXCLUDE_COLUMN.remove("createTime"); // 创建时间,还是可能需要传递的 |
| 97 | LIST_OPERATION_RESULT_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); | 111 | LIST_OPERATION_RESULT_EXCLUDE_COLUMN.addAll(BASE_DO_FIELDS); |
| 98 | - LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("create_time"); // 创建时间,还是需要返回的 | 112 | + LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("createTime"); // 创建时间,还是需要返回的 |
| 99 | } | 113 | } |
| 100 | 114 | ||
| 101 | public ToolCodegenTableDO buildTable(ToolInformationSchemaTableDO schemaTable) { | 115 | public ToolCodegenTableDO buildTable(ToolInformationSchemaTableDO schemaTable) { |
| @@ -110,13 +124,12 @@ public class ToolCodegenBuilder { | @@ -110,13 +124,12 @@ public class ToolCodegenBuilder { | ||
| 110 | * @param table 表定义 | 124 | * @param table 表定义 |
| 111 | */ | 125 | */ |
| 112 | private void initTableDefault(ToolCodegenTableDO table) { | 126 | private void initTableDefault(ToolCodegenTableDO table) { |
| 113 | - table.setModuleName(StrUtil.subBefore(table.getTableName(), | ||
| 114 | - '_', false)); // 第一个 _ 前缀的前面,作为 module 名字 | ||
| 115 | - table.setBusinessName(StrUtil.subAfter(table.getTableName(), | ||
| 116 | - '_', false)); // 第一个 _ 前缀的后面,作为 module 名字 | ||
| 117 | - table.setBusinessName(StrUtil.toCamelCase(table.getBusinessName())); // 可能存在多个 _ 的情况,转换成驼峰 | ||
| 118 | - table.setClassName(StrUtil.upperFirst(StrUtil.toCamelCase(table.getTableName()))); // 驼峰 + 首字母大写 | ||
| 119 | - table.setClassComment(StrUtil.subBefore(table.getTableComment(), // 去除结尾的表,作为类描述 | 127 | + table.setModuleName(getFullModuleName(StrUtil.subBefore(table.getTableName(), |
| 128 | + '_', false))); // 第一个 _ 前缀的前面,作为 module 名字 | ||
| 129 | + table.setBusinessName(toCamelCase(subAfter(table.getTableName(), | ||
| 130 | + '_', false))); // 第一步,第一个 _ 前缀的后面,作为 module 名字; 第二步,可能存在多个 _ 的情况,转换成驼峰 | ||
| 131 | + table.setClassName(upperFirst(toCamelCase(table.getTableName()))); // 驼峰 + 首字母大写 | ||
| 132 | + table.setClassComment(subBefore(table.getTableComment(), // 去除结尾的表,作为类描述 | ||
| 120 | '表', true)); | 133 | '表', true)); |
| 121 | table.setAuthor("芋艿"); // TODO 稍后改成创建人 | 134 | table.setAuthor("芋艿"); // TODO 稍后改成创建人 |
| 122 | table.setTemplateType(ToolCodegenTemplateTypeEnum.CRUD.getType()); | 135 | table.setTemplateType(ToolCodegenTemplateTypeEnum.CRUD.getType()); |
| @@ -144,7 +157,7 @@ public class ToolCodegenBuilder { | @@ -144,7 +157,7 @@ public class ToolCodegenBuilder { | ||
| 144 | 157 | ||
| 145 | private void processColumnJava(ToolCodegenColumnDO column) { | 158 | private void processColumnJava(ToolCodegenColumnDO column) { |
| 146 | // 处理 javaField 字段 | 159 | // 处理 javaField 字段 |
| 147 | - column.setJavaField(StrUtil.toCamelCase(column.getColumnName())); | 160 | + column.setJavaField(toCamelCase(column.getColumnName())); |
| 148 | // 处理 dictType 字段,暂无 | 161 | // 处理 dictType 字段,暂无 |
| 149 | // 处理 javaType 字段 | 162 | // 处理 javaType 字段 |
| 150 | String dbType = StrUtil.subBefore(column.getColumnType(), '(', false); | 163 | String dbType = StrUtil.subBefore(column.getColumnType(), '(', false); |
| @@ -194,4 +207,27 @@ public class ToolCodegenBuilder { | @@ -194,4 +207,27 @@ public class ToolCodegenBuilder { | ||
| 194 | } | 207 | } |
| 195 | } | 208 | } |
| 196 | 209 | ||
| 210 | + /** | ||
| 211 | + * 获得模块的缩略名 | ||
| 212 | + * | ||
| 213 | + * @param fullModuleName 模块的完整名 | ||
| 214 | + * @return 缩略名 | ||
| 215 | + */ | ||
| 216 | + public String getSimpleModuleName(String fullModuleName) { | ||
| 217 | + return moduleNames.getOrDefault(fullModuleName, fullModuleName); | ||
| 218 | + } | ||
| 219 | + | ||
| 220 | + /** | ||
| 221 | + * 获得模块的完整名 | ||
| 222 | + * | ||
| 223 | + * @param shortModuleName 模块的缩略名 | ||
| 224 | + * @return 完整名 | ||
| 225 | + */ | ||
| 226 | + public String getFullModuleName(String shortModuleName) { | ||
| 227 | + return moduleNames.entrySet().stream() | ||
| 228 | + .filter(entry -> entry.getValue().equals(shortModuleName)) // 匹配 | ||
| 229 | + .findFirst().map(Map.Entry::getKey) // 返回 key | ||
| 230 | + .orElse(shortModuleName); // 兜底返回 shortModuleName | ||
| 231 | + } | ||
| 232 | + | ||
| 197 | } | 233 | } |
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
| @@ -14,6 +14,7 @@ import cn.iocoder.dashboard.util.collection.CollectionUtils; | @@ -14,6 +14,7 @@ import cn.iocoder.dashboard.util.collection.CollectionUtils; | ||
| 14 | import cn.iocoder.dashboard.util.date.DateUtils; | 14 | import cn.iocoder.dashboard.util.date.DateUtils; |
| 15 | import org.springframework.stereotype.Component; | 15 | import org.springframework.stereotype.Component; |
| 16 | 16 | ||
| 17 | +import javax.annotation.Resource; | ||
| 17 | import java.util.HashMap; | 18 | import java.util.HashMap; |
| 18 | import java.util.List; | 19 | import java.util.List; |
| 19 | import java.util.Map; | 20 | import java.util.Map; |
| @@ -31,6 +32,9 @@ import static cn.hutool.core.text.CharSequenceUtil.*; | @@ -31,6 +32,9 @@ import static cn.hutool.core.text.CharSequenceUtil.*; | ||
| 31 | @Component | 32 | @Component |
| 32 | public class ToolCodegenEngine { | 33 | public class ToolCodegenEngine { |
| 33 | 34 | ||
| 35 | + @Resource | ||
| 36 | + private ToolCodegenBuilder codegenBuilder; | ||
| 37 | + | ||
| 34 | /** | 38 | /** |
| 35 | * 模板引擎,由 hutool 实现 | 39 | * 模板引擎,由 hutool 实现 |
| 36 | */ | 40 | */ |
| @@ -69,9 +73,15 @@ public class ToolCodegenEngine { | @@ -69,9 +73,15 @@ public class ToolCodegenEngine { | ||
| 69 | Map<String, Object> bindingMap = new HashMap<>(globalBindingMap); | 73 | Map<String, Object> bindingMap = new HashMap<>(globalBindingMap); |
| 70 | bindingMap.put("table", table); | 74 | bindingMap.put("table", table); |
| 71 | bindingMap.put("columns", columns); | 75 | bindingMap.put("columns", columns); |
| 72 | - bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, ToolCodegenColumnDO::getPrimaryKey)); | ||
| 73 | - bindingMap.put("simpleClassName", upperFirst(toCamelCase(subAfter( // 去掉第一个驼峰,例如说 SysUser 去掉后是 User | ||
| 74 | - toUnderlineCase(table.getClassName()), '_', false)))); | 76 | + bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, ToolCodegenColumnDO::getPrimaryKey)); // 主键字段 |
| 77 | + String simpleModuleName = codegenBuilder.getSimpleModuleName(table.getModuleName()); | ||
| 78 | + bindingMap.put("simpleModuleName", simpleModuleName); // 将 system 转成 sys | ||
| 79 | + // className 相关 | ||
| 80 | + String simpleClassName = subAfter(table.getClassName(), upperFirst(simpleModuleName) | ||
| 81 | + , false); // 将 TestDictType 转换成 DictType. 因为在 create 等方法后,不需要带上 Test 前缀 | ||
| 82 | + bindingMap.put("simpleClassName", simpleClassName); | ||
| 83 | + bindingMap.put("simpleClassName_underlineCase", toUnderlineCase(simpleClassName)); // 将 DictType 转换成 dict_type | ||
| 84 | + bindingMap.put("classNameVar", lowerFirst(simpleClassName)); // 将 DictType 转换成 dictType,用于变量 | ||
| 75 | // 执行生成 | 85 | // 执行生成 |
| 76 | // String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); | 86 | // String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); |
| 77 | // String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); | 87 | // String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); |
| @@ -80,7 +90,10 @@ public class ToolCodegenEngine { | @@ -80,7 +90,10 @@ public class ToolCodegenEngine { | ||
| 80 | // String result = templateEngine.getTemplate("codegen/controller/vo/createReqVO.vm").render(bindingMap); | 90 | // String result = templateEngine.getTemplate("codegen/controller/vo/createReqVO.vm").render(bindingMap); |
| 81 | // String result = templateEngine.getTemplate("codegen/controller/vo/updateReqVO.vm").render(bindingMap); | 91 | // String result = templateEngine.getTemplate("codegen/controller/vo/updateReqVO.vm").render(bindingMap); |
| 82 | // String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap); | 92 | // String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap); |
| 93 | +// String result = templateEngine.getTemplate("codegen/convert/convert.vm").render(bindingMap); | ||
| 94 | +// String result = templateEngine.getTemplate("codegen/enums/errorcode.vm").render(bindingMap); | ||
| 83 | String result = templateEngine.getTemplate("codegen/service/service.vm").render(bindingMap); | 95 | String result = templateEngine.getTemplate("codegen/service/service.vm").render(bindingMap); |
| 96 | +// String result = templateEngine.getTemplate("codegen/service/serviceImpl.vm").render(bindingMap); | ||
| 84 | System.out.println(result); | 97 | System.out.println(result); |
| 85 | } | 98 | } |
| 86 | 99 |
src/main/resources/codegen/controller/vo/updateReqVO.vm
| @@ -6,8 +6,8 @@ import io.swagger.annotations.*; | @@ -6,8 +6,8 @@ import io.swagger.annotations.*; | ||
| 6 | import javax.validation.constraints.*; | 6 | import javax.validation.constraints.*; |
| 7 | ## 处理 Date 字段的引入 | 7 | ## 处理 Date 字段的引入 |
| 8 | #foreach ($column in $columns) | 8 | #foreach ($column in $columns) |
| 9 | -#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult})) | ||
| 10 | - && ${column.javaType} == "Date")## 时间类型 | 9 | +#if (${column.updateOperation} && (!${column.createOperation} || !${column.listOperationResult}) |
| 10 | + && ${column.javaType} == "Date"))## 时间类型 | ||
| 11 | import org.springframework.format.annotation.DateTimeFormat; | 11 | import org.springframework.format.annotation.DateTimeFormat; |
| 12 | 12 | ||
| 13 | import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; | 13 | import static ${DateUtilsClassName}.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; |
src/main/resources/codegen/convert/convert.vm
0 → 100644
| 1 | +package ${basePackage}.${table.moduleName}.convert.${table.businessName}; | ||
| 2 | + | ||
| 3 | +import org.mapstruct.Mapper; | ||
| 4 | +import org.mapstruct.factory.Mappers; | ||
| 5 | +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | ||
| 6 | +import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | +* ${table.classComment} Convert | ||
| 10 | +* | ||
| 11 | +* @author ${table.author} | ||
| 12 | +*/ | ||
| 13 | +@Mapper | ||
| 14 | +public interface ${table.className}Convert { | ||
| 15 | + | ||
| 16 | + ${table.className}Convert INSTANCE = Mappers.getMapper(${table.className}Convert.class); | ||
| 17 | + | ||
| 18 | + ${table.className}DO convert(${table.className}CreateReqVO bean); | ||
| 19 | + | ||
| 20 | + ${table.className}DO convert(${table.className}UpdateReqVO bean); | ||
| 21 | + | ||
| 22 | +} |
src/main/resources/codegen/dal/do.vm
| @@ -3,7 +3,7 @@ package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.business | @@ -3,7 +3,7 @@ package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.business | ||
| 3 | import lombok.*; | 3 | import lombok.*; |
| 4 | import java.util.*; | 4 | import java.util.*; |
| 5 | import com.baomidou.mybatisplus.annotation.*; | 5 | import com.baomidou.mybatisplus.annotation.*; |
| 6 | -import ${BaseDOClassName}; | 6 | +import ${baseDOClassName}; |
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | * ${table.classComment} DO | 9 | * ${table.classComment} DO |
src/main/resources/codegen/dal/mapper.vm
| @@ -5,6 +5,7 @@ import ${QueryWrapperClassName}; | @@ -5,6 +5,7 @@ import ${QueryWrapperClassName}; | ||
| 5 | import ${BaseMapperClassName}; | 5 | import ${BaseMapperClassName}; |
| 6 | import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO; | 6 | import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO; |
| 7 | import org.apache.ibatis.annotations.Mapper; | 7 | import org.apache.ibatis.annotations.Mapper; |
| 8 | +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.${table.className}PageReqVO; | ||
| 8 | 9 | ||
| 9 | /** | 10 | /** |
| 10 | * ${table.classComment} Mapper | 11 | * ${table.classComment} Mapper |
| @@ -26,19 +27,19 @@ public interface ${table.className}Mapper extends BaseMapperX<${table.className} | @@ -26,19 +27,19 @@ public interface ${table.className}Mapper extends BaseMapperX<${table.className} | ||
| 26 | .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 27 | .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 27 | #end | 28 | #end |
| 28 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 | 29 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 |
| 29 | - .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 30 | + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 30 | #end | 31 | #end |
| 31 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 | 32 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 |
| 32 | - .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 33 | + .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 33 | #end | 34 | #end |
| 34 | #if (${column.listOperationCondition} == "<")##情况五,< 的时候 | 35 | #if (${column.listOperationCondition} == "<")##情况五,< 的时候 |
| 35 | - .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 36 | + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 36 | #end | 37 | #end |
| 37 | #if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 | 38 | #if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 |
| 38 | - .likeIfPresent("${column.columnName}", reqVO.get${JavaField}()) | 39 | + .likeIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 39 | #end | 40 | #end |
| 40 | #if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 | 41 | #if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 |
| 41 | - .betweenIfPresent("${column.columnName}", reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) | 42 | + .betweenIfPresent("${column.columnName}", reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) |
| 42 | #end | 43 | #end |
| 43 | #end | 44 | #end |
| 44 | #end | 45 | #end |
src/main/resources/codegen/enums/errorcode.vm
0 → 100644
src/main/resources/codegen/service/service.vm
| @@ -17,7 +17,7 @@ public interface ${table.className}Service { | @@ -17,7 +17,7 @@ public interface ${table.className}Service { | ||
| 17 | * 创建${table.classComment} | 17 | * 创建${table.classComment} |
| 18 | * | 18 | * |
| 19 | * @param createReqVO 创建信息 | 19 | * @param createReqVO 创建信息 |
| 20 | - * @return ${class.description} | 20 | + * @return 编号 |
| 21 | */ | 21 | */ |
| 22 | ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO); | 22 | ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO); |
| 23 | 23 | ||
| @@ -39,7 +39,7 @@ public interface ${table.className}Service { | @@ -39,7 +39,7 @@ public interface ${table.className}Service { | ||
| 39 | * 获得${table.classComment} | 39 | * 获得${table.classComment} |
| 40 | * | 40 | * |
| 41 | * @param id 编号 | 41 | * @param id 编号 |
| 42 | - * @return ${class.description} | 42 | + * @return ${table.classComment} |
| 43 | */ | 43 | */ |
| 44 | ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id); | 44 | ${table.className}DO get${simpleClassName}(${primaryColumn.javaType} id); |
| 45 | 45 | ||
| @@ -47,7 +47,7 @@ public interface ${table.className}Service { | @@ -47,7 +47,7 @@ public interface ${table.className}Service { | ||
| 47 | * 获得${table.classComment}列表 | 47 | * 获得${table.classComment}列表 |
| 48 | * | 48 | * |
| 49 | * @param ids 编号 | 49 | * @param ids 编号 |
| 50 | - * @return ${class.classComment}列表 | 50 | + * @return ${table.classComment}列表 |
| 51 | */ | 51 | */ |
| 52 | List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids); | 52 | List<${table.className}DO> get${simpleClassName}List(Collection<${primaryColumn.javaType}> ids); |
| 53 | 53 | ||
| @@ -55,7 +55,7 @@ public interface ${table.className}Service { | @@ -55,7 +55,7 @@ public interface ${table.className}Service { | ||
| 55 | * 获得${table.classComment}分页 | 55 | * 获得${table.classComment}分页 |
| 56 | * | 56 | * |
| 57 | * @param pageReqVO 分页查询 | 57 | * @param pageReqVO 分页查询 |
| 58 | - * @return ${class.classComment}分页 | 58 | + * @return ${table.classComment}分页 |
| 59 | */ | 59 | */ |
| 60 | PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO); | 60 | PageResult<${table.className}DO> get${simpleClassName}Page(${table.className}PageReqVO pageReqVO); |
| 61 | 61 |
src/main/resources/codegen/service/serviceImpl.vm
0 → 100644
| 1 | +package ${basePackage}.${table.moduleName}.service.${table.businessName}.impl; | ||
| 2 | + | ||
| 3 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 4 | +import org.springframework.stereotype.Service; | ||
| 5 | +import javax.annotation.Resource; | ||
| 6 | +import org.springframework.validation.annotation.Validated; | ||
| 7 | + | ||
| 8 | +import java.util.*; | ||
| 9 | +import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | ||
| 10 | +import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO; | ||
| 11 | +import ${PageResultClassName}; | ||
| 12 | + | ||
| 13 | +import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName.substring(0,1).toUpperCase()}${simpleModuleName.substring(1)}ErrorCodeConstants.*; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | +* ${table.classComment} Service 实现类 | ||
| 17 | +* | ||
| 18 | +* @author ${table.author} | ||
| 19 | +*/ | ||
| 20 | +@Validated | ||
| 21 | +public class ${table.className}ServiceImpl implements {table.className}Service { | ||
| 22 | + | ||
| 23 | + @Resource | ||
| 24 | + private ${table.className}Mapper ${classNameVar}Mapper; | ||
| 25 | + | ||
| 26 | + @Override | ||
| 27 | + public ${primaryColumn.javaType} create${simpleClassName}(@Valid ${table.className}CreateReqVO createReqVO) { | ||
| 28 | + } | ||
| 29 | + | ||
| 30 | +} |
src/test/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngineTest.java
| @@ -24,7 +24,7 @@ public class ToolCodegenEngineTest { | @@ -24,7 +24,7 @@ public class ToolCodegenEngineTest { | ||
| 24 | 24 | ||
| 25 | @Test | 25 | @Test |
| 26 | public void testExecute() { | 26 | public void testExecute() { |
| 27 | - ToolCodegenTableDO table = codegenTableMapper.selectById(8); | 27 | + ToolCodegenTableDO table = codegenTableMapper.selectById(10); |
| 28 | List<ToolCodegenColumnDO> columns = codegenColumnMapper.selectByTableId(table.getId()); | 28 | List<ToolCodegenColumnDO> columns = codegenColumnMapper.selectByTableId(table.getId()); |
| 29 | codegenEngine.execute(table, columns); | 29 | codegenEngine.execute(table, columns); |
| 30 | } | 30 | } |
src/test/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenServiceImplTest.java
| @@ -16,7 +16,7 @@ class ToolCodegenServiceImplTest { | @@ -16,7 +16,7 @@ class ToolCodegenServiceImplTest { | ||
| 16 | 16 | ||
| 17 | @Test | 17 | @Test |
| 18 | public void tetCreateCodegenTable() { | 18 | public void tetCreateCodegenTable() { |
| 19 | - toolCodegenService.createCodegenTable("sys_dict_type"); | 19 | + toolCodegenService.createCodegenTable("sys_test_demo"); |
| 20 | } | 20 | } |
| 21 | 21 | ||
| 22 | } | 22 | } |