格式化、去掉接口之前 I 字母、添加 Slf4j

pull/64/head
陈云志 5 years ago
parent 494668ea37
commit 19acd33048

@ -1,24 +1,22 @@
package com.ruoyi.gen; package com.ruoyi.gen;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableCustomConfig;
import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.security.annotation.EnableRyFeignClients;
import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@EnableCustomConfig @EnableCustomConfig
@EnableCustomSwagger2 @EnableCustomSwagger2
@EnableRyFeignClients @EnableRyFeignClients
@SpringCloudApplication @SpringCloudApplication
public class RuoYiGenApplication public class RuoYiGenApplication {
{ public static void main(String[] args) {
public static void main(String[] args)
{
SpringApplication.run(RuoYiGenApplication.class, args); SpringApplication.run(RuoYiGenApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 代码生成模块启动成功 ლ(´ڡ`ლ)゙ \n" + System.out.println("(♥◠‿◠)ノ゙ 代码生成模块启动成功 ლ(´ڡ`ლ)゙ \n" +
" .-------. ____ __ \n" + " .-------. ____ __ \n" +

@ -5,62 +5,61 @@ import org.springframework.stereotype.Component;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
@ConfigurationProperties(prefix = "gen") @ConfigurationProperties(prefix = "gen")
public class GenConfig public class GenConfig {
{ /**
/** 作者 */ *
*/
public static String author; public static String author;
/** 生成包路径 */ /**
*
*/
public static String packageName; public static String packageName;
/** 自动去除表前缀默认是false */ /**
* false
*/
public static boolean autoRemovePre; public static boolean autoRemovePre;
/** 表前缀(类名不会包含表前缀) */ /**
* ()
*/
public static String tablePrefix; public static String tablePrefix;
public static String getAuthor() public static String getAuthor() {
{
return author; return author;
} }
public void setAuthor(String author) public void setAuthor(String author) {
{
GenConfig.author = author; GenConfig.author = author;
} }
public static String getPackageName() public static String getPackageName() {
{
return packageName; return packageName;
} }
public void setPackageName(String packageName) public void setPackageName(String packageName) {
{
GenConfig.packageName = packageName; GenConfig.packageName = packageName;
} }
public static boolean getAutoRemovePre() public static boolean getAutoRemovePre() {
{
return autoRemovePre; return autoRemovePre;
} }
public void setAutoRemovePre(boolean autoRemovePre) public void setAutoRemovePre(boolean autoRemovePre) {
{
GenConfig.autoRemovePre = autoRemovePre; GenConfig.autoRemovePre = autoRemovePre;
} }
public static String getTablePrefix() public static String getTablePrefix() {
{
return tablePrefix; return tablePrefix;
} }
public void setTablePrefix(String tablePrefix) public void setTablePrefix(String tablePrefix) {
{
GenConfig.tablePrefix = tablePrefix; GenConfig.tablePrefix = tablePrefix;
} }
} }

@ -1,21 +1,5 @@
package com.ruoyi.gen.controller; package com.ruoyi.gen.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
@ -27,16 +11,25 @@ import com.ruoyi.gen.domain.GenTable;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import com.ruoyi.gen.service.IGenTableColumnService; import com.ruoyi.gen.service.IGenTableColumnService;
import com.ruoyi.gen.service.IGenTableService; import com.ruoyi.gen.service.IGenTableService;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@RequestMapping("/gen") @RequestMapping("/gen")
@RestController @RestController
public class GenController extends BaseController public class GenController extends BaseController {
{
@Autowired @Autowired
private IGenTableService genTableService; private IGenTableService genTableService;
@ -48,8 +41,7 @@ public class GenController extends BaseController
*/ */
@PreAuthorize(hasPermi = "tool:gen:list") @PreAuthorize(hasPermi = "tool:gen:list")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo genList(GenTable genTable) public TableDataInfo genList(GenTable genTable) {
{
startPage(); startPage();
List<GenTable> list = genTableService.selectGenTableList(genTable); List<GenTable> list = genTableService.selectGenTableList(genTable);
return getDataTable(list); return getDataTable(list);
@ -60,8 +52,7 @@ public class GenController extends BaseController
*/ */
@PreAuthorize(hasPermi = "tool:gen:query") @PreAuthorize(hasPermi = "tool:gen:query")
@GetMapping(value = "/{talbleId}") @GetMapping(value = "/{talbleId}")
public AjaxResult getInfo(@PathVariable Long talbleId) public AjaxResult getInfo(@PathVariable Long talbleId) {
{
GenTable table = genTableService.selectGenTableById(talbleId); GenTable table = genTableService.selectGenTableById(talbleId);
List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(talbleId); List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(talbleId);
Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
@ -75,8 +66,7 @@ public class GenController extends BaseController
*/ */
@PreAuthorize(hasPermi = "tool:gen:list") @PreAuthorize(hasPermi = "tool:gen:list")
@GetMapping("/db/list") @GetMapping("/db/list")
public TableDataInfo dataList(GenTable genTable) public TableDataInfo dataList(GenTable genTable) {
{
startPage(); startPage();
List<GenTable> list = genTableService.selectDbTableList(genTable); List<GenTable> list = genTableService.selectDbTableList(genTable);
return getDataTable(list); return getDataTable(list);
@ -86,8 +76,7 @@ public class GenController extends BaseController
* *
*/ */
@GetMapping(value = "/column/{talbleId}") @GetMapping(value = "/column/{talbleId}")
public TableDataInfo columnList(Long tableId) public TableDataInfo columnList(Long tableId) {
{
TableDataInfo dataInfo = new TableDataInfo(); TableDataInfo dataInfo = new TableDataInfo();
List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId); List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
dataInfo.setRows(list); dataInfo.setRows(list);
@ -101,8 +90,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:list") @PreAuthorize(hasPermi = "tool:gen:list")
@Log(title = "代码生成", businessType = BusinessType.IMPORT) @Log(title = "代码生成", businessType = BusinessType.IMPORT)
@PostMapping("/importTable") @PostMapping("/importTable")
public AjaxResult importTableSave(String tables) public AjaxResult importTableSave(String tables) {
{
String[] tableNames = Convert.toStrArray(tables); String[] tableNames = Convert.toStrArray(tables);
// 查询表信息 // 查询表信息
List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames); List<GenTable> tableList = genTableService.selectDbTableListByNames(tableNames);
@ -116,8 +104,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:edit") @PreAuthorize(hasPermi = "tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE) @Log(title = "代码生成", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult editSave(@Validated @RequestBody GenTable genTable) public AjaxResult editSave(@Validated @RequestBody GenTable genTable) {
{
genTableService.validateEdit(genTable); genTableService.validateEdit(genTable);
genTableService.updateGenTable(genTable); genTableService.updateGenTable(genTable);
return AjaxResult.success(); return AjaxResult.success();
@ -129,8 +116,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:remove") @PreAuthorize(hasPermi = "tool:gen:remove")
@Log(title = "代码生成", businessType = BusinessType.DELETE) @Log(title = "代码生成", businessType = BusinessType.DELETE)
@DeleteMapping("/{tableIds}") @DeleteMapping("/{tableIds}")
public AjaxResult remove(@PathVariable Long[] tableIds) public AjaxResult remove(@PathVariable Long[] tableIds) {
{
genTableService.deleteGenTableByIds(tableIds); genTableService.deleteGenTableByIds(tableIds);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -140,8 +126,7 @@ public class GenController extends BaseController
*/ */
@PreAuthorize(hasPermi = "tool:gen:preview") @PreAuthorize(hasPermi = "tool:gen:preview")
@GetMapping("/preview/{tableId}") @GetMapping("/preview/{tableId}")
public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException public AjaxResult preview(@PathVariable("tableId") Long tableId) throws IOException {
{
Map<String, String> dataMap = genTableService.previewCode(tableId); Map<String, String> dataMap = genTableService.previewCode(tableId);
return AjaxResult.success(dataMap); return AjaxResult.success(dataMap);
} }
@ -152,8 +137,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:code") @PreAuthorize(hasPermi = "tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE) @Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/download/{tableName}") @GetMapping("/download/{tableName}")
public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException public void download(HttpServletResponse response, @PathVariable("tableName") String tableName) throws IOException {
{
byte[] data = genTableService.downloadCode(tableName); byte[] data = genTableService.downloadCode(tableName);
genCode(response, data); genCode(response, data);
} }
@ -164,8 +148,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:code") @PreAuthorize(hasPermi = "tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE) @Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/genCode/{tableName}") @GetMapping("/genCode/{tableName}")
public AjaxResult genCode(@PathVariable("tableName") String tableName) public AjaxResult genCode(@PathVariable("tableName") String tableName) {
{
genTableService.generatorCode(tableName); genTableService.generatorCode(tableName);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -176,8 +159,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:edit") @PreAuthorize(hasPermi = "tool:gen:edit")
@Log(title = "代码生成", businessType = BusinessType.UPDATE) @Log(title = "代码生成", businessType = BusinessType.UPDATE)
@GetMapping("/synchDb/{tableName}") @GetMapping("/synchDb/{tableName}")
public AjaxResult synchDb(@PathVariable("tableName") String tableName) public AjaxResult synchDb(@PathVariable("tableName") String tableName) {
{
genTableService.synchDb(tableName); genTableService.synchDb(tableName);
return AjaxResult.success(); return AjaxResult.success();
} }
@ -188,8 +170,7 @@ public class GenController extends BaseController
@PreAuthorize(hasPermi = "tool:gen:code") @PreAuthorize(hasPermi = "tool:gen:code")
@Log(title = "代码生成", businessType = BusinessType.GENCODE) @Log(title = "代码生成", businessType = BusinessType.GENCODE)
@GetMapping("/batchGenCode") @GetMapping("/batchGenCode")
public void batchGenCode(HttpServletResponse response, String tables) throws IOException public void batchGenCode(HttpServletResponse response, String tables) throws IOException {
{
String[] tableNames = Convert.toStrArray(tables); String[] tableNames = Convert.toStrArray(tables);
byte[] data = genTableService.downloadCode(tableNames); byte[] data = genTableService.downloadCode(tableNames);
genCode(response, data); genCode(response, data);
@ -198,10 +179,9 @@ public class GenController extends BaseController
/** /**
* zip * zip
*/ */
private void genCode(HttpServletResponse response, byte[] data) throws IOException private void genCode(HttpServletResponse response, byte[] data) throws IOException {
{
response.reset(); response.reset();
response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); response.setHeader("Content-Disposition", "attachment; filename=\"code.zip\"");
response.addHeader("Content-Length", "" + data.length); response.addHeader("Content-Length", "" + data.length);
response.setContentType("application/octet-stream; charset=UTF-8"); response.setContentType("application/octet-stream; charset=UTF-8");
IOUtils.write(data, response.getOutputStream()); IOUtils.write(data, response.getOutputStream());

@ -1,320 +1,313 @@
package com.ruoyi.gen.domain; package com.ruoyi.gen.domain;
import java.util.List;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import org.apache.commons.lang3.ArrayUtils;
import com.ruoyi.common.core.constant.GenConstants; import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import org.apache.commons.lang3.ArrayUtils;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
/** /**
* gen_table * gen_table
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenTable extends BaseEntity public class GenTable extends BaseEntity {
{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 编号 */ /**
*
*/
private Long tableId; private Long tableId;
/** 表名称 */ /**
*
*/
@NotBlank(message = "表名称不能为空") @NotBlank(message = "表名称不能为空")
private String tableName; private String tableName;
/** 表描述 */ /**
*
*/
@NotBlank(message = "表描述不能为空") @NotBlank(message = "表描述不能为空")
private String tableComment; private String tableComment;
/** 实体类名称(首字母大写) */ /**
* ()
*/
@NotBlank(message = "实体类名称不能为空") @NotBlank(message = "实体类名称不能为空")
private String className; private String className;
/** 使用的模板crud单表操作 tree树表操作 */ /**
* 使crud tree
*/
private String tplCategory; private String tplCategory;
/** 生成包路径 */ /**
*
*/
@NotBlank(message = "生成包路径不能为空") @NotBlank(message = "生成包路径不能为空")
private String packageName; private String packageName;
/** 生成模块名 */ /**
*
*/
@NotBlank(message = "生成模块名不能为空") @NotBlank(message = "生成模块名不能为空")
private String moduleName; private String moduleName;
/** 生成业务名 */ /**
*
*/
@NotBlank(message = "生成业务名不能为空") @NotBlank(message = "生成业务名不能为空")
private String businessName; private String businessName;
/** 生成功能名 */ /**
*
*/
@NotBlank(message = "生成功能名不能为空") @NotBlank(message = "生成功能名不能为空")
private String functionName; private String functionName;
/** 生成作者 */ /**
*
*/
@NotBlank(message = "作者不能为空") @NotBlank(message = "作者不能为空")
private String functionAuthor; private String functionAuthor;
/** 生成代码方式0zip压缩包 1自定义路径 */ /**
* 0zip 1
*/
private String genType; private String genType;
/** 生成路径(不填默认项目路径) */ /**
*
*/
private String genPath; private String genPath;
/** 主键信息 */ /**
*
*/
private GenTableColumn pkColumn; private GenTableColumn pkColumn;
/** 表列信息 */ /**
*
*/
@Valid @Valid
private List<GenTableColumn> columns; private List<GenTableColumn> columns;
/** 其它生成选项 */ /**
*
*/
private String options; private String options;
/** 树编码字段 */ /**
*
*/
private String treeCode; private String treeCode;
/** 树父编码字段 */ /**
*
*/
private String treeParentCode; private String treeParentCode;
/** 树名称字段 */ /**
*
*/
private String treeName; private String treeName;
/** 上级菜单ID字段 */ /**
* ID
*/
private String parentMenuId; private String parentMenuId;
/** 上级菜单名称字段 */ /**
*
*/
private String parentMenuName; private String parentMenuName;
public Long getTableId() public Long getTableId() {
{
return tableId; return tableId;
} }
public void setTableId(Long tableId) public void setTableId(Long tableId) {
{
this.tableId = tableId; this.tableId = tableId;
} }
public String getTableName() public String getTableName() {
{
return tableName; return tableName;
} }
public void setTableName(String tableName) public void setTableName(String tableName) {
{
this.tableName = tableName; this.tableName = tableName;
} }
public String getTableComment() public String getTableComment() {
{
return tableComment; return tableComment;
} }
public void setTableComment(String tableComment) public void setTableComment(String tableComment) {
{
this.tableComment = tableComment; this.tableComment = tableComment;
} }
public String getClassName() public String getClassName() {
{
return className; return className;
} }
public void setClassName(String className) public void setClassName(String className) {
{
this.className = className; this.className = className;
} }
public String getTplCategory() public String getTplCategory() {
{
return tplCategory; return tplCategory;
} }
public void setTplCategory(String tplCategory) public void setTplCategory(String tplCategory) {
{
this.tplCategory = tplCategory; this.tplCategory = tplCategory;
} }
public String getPackageName() public String getPackageName() {
{
return packageName; return packageName;
} }
public void setPackageName(String packageName) public void setPackageName(String packageName) {
{
this.packageName = packageName; this.packageName = packageName;
} }
public String getModuleName() public String getModuleName() {
{
return moduleName; return moduleName;
} }
public void setModuleName(String moduleName) public void setModuleName(String moduleName) {
{
this.moduleName = moduleName; this.moduleName = moduleName;
} }
public String getBusinessName() public String getBusinessName() {
{
return businessName; return businessName;
} }
public void setBusinessName(String businessName) public void setBusinessName(String businessName) {
{
this.businessName = businessName; this.businessName = businessName;
} }
public String getFunctionName() public String getFunctionName() {
{
return functionName; return functionName;
} }
public void setFunctionName(String functionName) public void setFunctionName(String functionName) {
{
this.functionName = functionName; this.functionName = functionName;
} }
public String getFunctionAuthor() public String getFunctionAuthor() {
{
return functionAuthor; return functionAuthor;
} }
public void setFunctionAuthor(String functionAuthor) public void setFunctionAuthor(String functionAuthor) {
{
this.functionAuthor = functionAuthor; this.functionAuthor = functionAuthor;
} }
public String getGenType() public String getGenType() {
{
return genType; return genType;
} }
public void setGenType(String genType) public void setGenType(String genType) {
{
this.genType = genType; this.genType = genType;
} }
public String getGenPath() public String getGenPath() {
{
return genPath; return genPath;
} }
public void setGenPath(String genPath) public void setGenPath(String genPath) {
{
this.genPath = genPath; this.genPath = genPath;
} }
public GenTableColumn getPkColumn() public GenTableColumn getPkColumn() {
{
return pkColumn; return pkColumn;
} }
public void setPkColumn(GenTableColumn pkColumn) public void setPkColumn(GenTableColumn pkColumn) {
{
this.pkColumn = pkColumn; this.pkColumn = pkColumn;
} }
public List<GenTableColumn> getColumns() public List<GenTableColumn> getColumns() {
{
return columns; return columns;
} }
public void setColumns(List<GenTableColumn> columns) public void setColumns(List<GenTableColumn> columns) {
{
this.columns = columns; this.columns = columns;
} }
public String getOptions() public String getOptions() {
{
return options; return options;
} }
public void setOptions(String options) public void setOptions(String options) {
{
this.options = options; this.options = options;
} }
public String getTreeCode() public String getTreeCode() {
{
return treeCode; return treeCode;
} }
public void setTreeCode(String treeCode) public void setTreeCode(String treeCode) {
{
this.treeCode = treeCode; this.treeCode = treeCode;
} }
public String getTreeParentCode() public String getTreeParentCode() {
{
return treeParentCode; return treeParentCode;
} }
public void setTreeParentCode(String treeParentCode) public void setTreeParentCode(String treeParentCode) {
{
this.treeParentCode = treeParentCode; this.treeParentCode = treeParentCode;
} }
public String getTreeName() public String getTreeName() {
{
return treeName; return treeName;
} }
public void setTreeName(String treeName) public void setTreeName(String treeName) {
{
this.treeName = treeName; this.treeName = treeName;
} }
public String getParentMenuId() public String getParentMenuId() {
{
return parentMenuId; return parentMenuId;
} }
public void setParentMenuId(String parentMenuId) public void setParentMenuId(String parentMenuId) {
{
this.parentMenuId = parentMenuId; this.parentMenuId = parentMenuId;
} }
public String getParentMenuName() public String getParentMenuName() {
{
return parentMenuName; return parentMenuName;
} }
public void setParentMenuName(String parentMenuName) public void setParentMenuName(String parentMenuName) {
{
this.parentMenuName = parentMenuName; this.parentMenuName = parentMenuName;
} }
public boolean isTree() public boolean isTree() {
{ return isTree(tplCategory);
return isTree(this.tplCategory);
} }
public static boolean isTree(String tplCategory) public static boolean isTree(String tplCategory) {
{
return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory); return tplCategory != null && StringUtils.equals(GenConstants.TPL_TREE, tplCategory);
} }
public boolean isCrud() public boolean isCrud() {
{ return isCrud(tplCategory);
return isCrud(this.tplCategory);
} }
public static boolean isCrud(String tplCategory) public static boolean isCrud(String tplCategory) {
{
return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory); return tplCategory != null && StringUtils.equals(GenConstants.TPL_CRUD, tplCategory);
} }
public boolean isSuperColumn(String javaField) public boolean isSuperColumn(String javaField) {
{ return isSuperColumn(tplCategory, javaField);
return isSuperColumn(this.tplCategory, javaField);
} }
public static boolean isSuperColumn(String tplCategory, String javaField) public static boolean isSuperColumn(String tplCategory, String javaField) {
{ if (isTree(tplCategory)) {
if (isTree(tplCategory))
{
return StringUtils.equalsAnyIgnoreCase(javaField, return StringUtils.equalsAnyIgnoreCase(javaField,
ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY)); ArrayUtils.addAll(GenConstants.TREE_ENTITY, GenConstants.BASE_ENTITY));
} }

@ -1,331 +1,314 @@
package com.ruoyi.gen.domain; package com.ruoyi.gen.domain;
import javax.validation.constraints.NotBlank;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.web.domain.BaseEntity; import com.ruoyi.common.core.web.domain.BaseEntity;
import javax.validation.constraints.NotBlank;
/** /**
* gen_table_column * gen_table_column
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenTableColumn extends BaseEntity public class GenTableColumn extends BaseEntity {
{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 编号 */ /**
*
*/
private Long columnId; private Long columnId;
/** 归属表编号 */ /**
*
*/
private Long tableId; private Long tableId;
/** 列名称 */ /**
*
*/
private String columnName; private String columnName;
/** 列描述 */ /**
*
*/
private String columnComment; private String columnComment;
/** 列类型 */ /**
*
*/
private String columnType; private String columnType;
/** JAVA类型 */ /**
* JAVA
*/
private String javaType; private String javaType;
/** JAVA字段名 */ /**
* JAVA
*/
@NotBlank(message = "Java属性不能为空") @NotBlank(message = "Java属性不能为空")
private String javaField; private String javaField;
/** 是否主键1是 */ /**
* 1
*/
private String isPk; private String isPk;
/** 是否自增1是 */ /**
* 1
*/
private String isIncrement; private String isIncrement;
/** 是否必填1是 */ /**
* 1
*/
private String isRequired; private String isRequired;
/** 是否为插入字段1是 */ /**
* 1
*/
private String isInsert; private String isInsert;
/** 是否编辑字段1是 */ /**
* 1
*/
private String isEdit; private String isEdit;
/** 是否列表字段1是 */ /**
* 1
*/
private String isList; private String isList;
/** 是否查询字段1是 */ /**
* 1
*/
private String isQuery; private String isQuery;
/** 查询方式EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围 */ /**
* EQNEGTLTLIKEBETWEEN
*/
private String queryType; private String queryType;
/** 显示类型input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、upload上传控件、editor富文本控件 */ /**
* inputtextareaselectcheckboxradiodatetimeuploadeditor
*/
private String htmlType; private String htmlType;
/** 字典类型 */ /**
*
*/
private String dictType; private String dictType;
/** 排序 */ /**
*
*/
private Integer sort; private Integer sort;
public void setColumnId(Long columnId) public void setColumnId(Long columnId) {
{
this.columnId = columnId; this.columnId = columnId;
} }
public Long getColumnId() public Long getColumnId() {
{
return columnId; return columnId;
} }
public void setTableId(Long tableId) public void setTableId(Long tableId) {
{
this.tableId = tableId; this.tableId = tableId;
} }
public Long getTableId() public Long getTableId() {
{
return tableId; return tableId;
} }
public void setColumnName(String columnName) public void setColumnName(String columnName) {
{
this.columnName = columnName; this.columnName = columnName;
} }
public String getColumnName() public String getColumnName() {
{
return columnName; return columnName;
} }
public void setColumnComment(String columnComment) public void setColumnComment(String columnComment) {
{
this.columnComment = columnComment; this.columnComment = columnComment;
} }
public String getColumnComment() public String getColumnComment() {
{
return columnComment; return columnComment;
} }
public void setColumnType(String columnType) public void setColumnType(String columnType) {
{
this.columnType = columnType; this.columnType = columnType;
} }
public String getColumnType() public String getColumnType() {
{
return columnType; return columnType;
} }
public void setJavaType(String javaType) public void setJavaType(String javaType) {
{
this.javaType = javaType; this.javaType = javaType;
} }
public String getJavaType() public String getJavaType() {
{
return javaType; return javaType;
} }
public void setJavaField(String javaField) public void setJavaField(String javaField) {
{
this.javaField = javaField; this.javaField = javaField;
} }
public String getJavaField() public String getJavaField() {
{
return javaField; return javaField;
} }
public void setIsPk(String isPk) public void setIsPk(String isPk) {
{
this.isPk = isPk; this.isPk = isPk;
} }
public String getIsPk() public String getIsPk() {
{
return isPk; return isPk;
} }
public boolean isPk() public boolean isPk() {
{ return isPk(isPk);
return isPk(this.isPk);
} }
public boolean isPk(String isPk) public boolean isPk(String isPk) {
{
return isPk != null && StringUtils.equals("1", isPk); return isPk != null && StringUtils.equals("1", isPk);
} }
public String getIsIncrement() public String getIsIncrement() {
{
return isIncrement; return isIncrement;
} }
public void setIsIncrement(String isIncrement) public void setIsIncrement(String isIncrement) {
{
this.isIncrement = isIncrement; this.isIncrement = isIncrement;
} }
public boolean isIncrement() public boolean isIncrement() {
{ return isIncrement(isIncrement);
return isIncrement(this.isIncrement);
} }
public boolean isIncrement(String isIncrement) public boolean isIncrement(String isIncrement) {
{
return isIncrement != null && StringUtils.equals("1", isIncrement); return isIncrement != null && StringUtils.equals("1", isIncrement);
} }
public void setIsRequired(String isRequired) public void setIsRequired(String isRequired) {
{
this.isRequired = isRequired; this.isRequired = isRequired;
} }
public String getIsRequired() public String getIsRequired() {
{
return isRequired; return isRequired;
} }
public boolean isRequired() public boolean isRequired() {
{ return isRequired(isRequired);
return isRequired(this.isRequired);
} }
public boolean isRequired(String isRequired) public boolean isRequired(String isRequired) {
{
return isRequired != null && StringUtils.equals("1", isRequired); return isRequired != null && StringUtils.equals("1", isRequired);
} }
public void setIsInsert(String isInsert) public void setIsInsert(String isInsert) {
{
this.isInsert = isInsert; this.isInsert = isInsert;
} }
public String getIsInsert() public String getIsInsert() {
{
return isInsert; return isInsert;
} }
public boolean isInsert() public boolean isInsert() {
{ return isInsert(isInsert);
return isInsert(this.isInsert);
} }
public boolean isInsert(String isInsert) public boolean isInsert(String isInsert) {
{
return isInsert != null && StringUtils.equals("1", isInsert); return isInsert != null && StringUtils.equals("1", isInsert);
} }
public void setIsEdit(String isEdit) public void setIsEdit(String isEdit) {
{
this.isEdit = isEdit; this.isEdit = isEdit;
} }
public String getIsEdit() public String getIsEdit() {
{
return isEdit; return isEdit;
} }
public boolean isEdit() public boolean isEdit() {
{ return isInsert(isEdit);
return isInsert(this.isEdit);
} }
public boolean isEdit(String isEdit) public boolean isEdit(String isEdit) {
{
return isEdit != null && StringUtils.equals("1", isEdit); return isEdit != null && StringUtils.equals("1", isEdit);
} }
public void setIsList(String isList) public void setIsList(String isList) {
{
this.isList = isList; this.isList = isList;
} }
public String getIsList() public String getIsList() {
{
return isList; return isList;
} }
public boolean isList() public boolean isList() {
{ return isList(isList);
return isList(this.isList);
} }
public boolean isList(String isList) public boolean isList(String isList) {
{
return isList != null && StringUtils.equals("1", isList); return isList != null && StringUtils.equals("1", isList);
} }
public void setIsQuery(String isQuery) public void setIsQuery(String isQuery) {
{
this.isQuery = isQuery; this.isQuery = isQuery;
} }
public String getIsQuery() public String getIsQuery() {
{
return isQuery; return isQuery;
} }
public boolean isQuery() public boolean isQuery() {
{ return isQuery(isQuery);
return isQuery(this.isQuery);
} }
public boolean isQuery(String isQuery) public boolean isQuery(String isQuery) {
{
return isQuery != null && StringUtils.equals("1", isQuery); return isQuery != null && StringUtils.equals("1", isQuery);
} }
public void setQueryType(String queryType) public void setQueryType(String queryType) {
{
this.queryType = queryType; this.queryType = queryType;
} }
public String getQueryType() public String getQueryType() {
{
return queryType; return queryType;
} }
public String getHtmlType() public String getHtmlType() {
{
return htmlType; return htmlType;
} }
public void setHtmlType(String htmlType) public void setHtmlType(String htmlType) {
{
this.htmlType = htmlType; this.htmlType = htmlType;
} }
public void setDictType(String dictType) public void setDictType(String dictType) {
{
this.dictType = dictType; this.dictType = dictType;
} }
public String getDictType() public String getDictType() {
{
return dictType; return dictType;
} }
public void setSort(Integer sort) public void setSort(Integer sort) {
{
this.sort = sort; this.sort = sort;
} }
public Integer getSort() public Integer getSort() {
{
return sort; return sort;
} }
public boolean isSuperColumn() public boolean isSuperColumn() {
{ return isSuperColumn(javaField);
return isSuperColumn(this.javaField);
} }
public static boolean isSuperColumn(String javaField) public static boolean isSuperColumn(String javaField) {
{
return StringUtils.equalsAnyIgnoreCase(javaField, return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity // BaseEntity
"createBy", "createTime", "updateBy", "updateTime", "remark", "createBy", "createTime", "updateBy", "updateTime", "remark",
@ -333,37 +316,29 @@ public class GenTableColumn extends BaseEntity
"parentName", "parentId", "orderNum", "ancestors"); "parentName", "parentId", "orderNum", "ancestors");
} }
public boolean isUsableColumn() public boolean isUsableColumn() {
{
return isUsableColumn(javaField); return isUsableColumn(javaField);
} }
public static boolean isUsableColumn(String javaField) public static boolean isUsableColumn(String javaField) {
{
// isSuperColumn()中的名单用于避免生成多余Domain属性若某些属性在生成页面时需要用到不能忽略则放在此处白名单 // isSuperColumn()中的名单用于避免生成多余Domain属性若某些属性在生成页面时需要用到不能忽略则放在此处白名单
return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark");
} }
public String readConverterExp() public String readConverterExp() {
{ String remarks = StringUtils.substringBetween(columnComment, "", "");
String remarks = StringUtils.substringBetween(this.columnComment, "", "");
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
if (StringUtils.isNotEmpty(remarks)) if (StringUtils.isNotEmpty(remarks)) {
{ for (String value : remarks.split(" ")) {
for (String value : remarks.split(" ")) if (StringUtils.isNotEmpty(value)) {
{
if (StringUtils.isNotEmpty(value))
{
Object startStr = value.subSequence(0, 1); Object startStr = value.subSequence(0, 1);
String endStr = value.substring(1); String endStr = value.substring(1);
sb.append("").append(startStr).append("=").append(endStr).append(","); sb.append("").append(startStr).append("=").append(endStr).append(",");
} }
} }
return sb.deleteCharAt(sb.length() - 1).toString(); return sb.deleteCharAt(sb.length() - 1).toString();
} } else {
else return columnComment;
{
return this.columnComment;
} }
} }
} }

@ -1,18 +1,18 @@
package com.ruoyi.gen.mapper; package com.ruoyi.gen.mapper;
import java.util.List;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface GenTableColumnMapper public interface GenTableColumnMapper {
{
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
@ -20,7 +20,7 @@ public interface GenTableColumnMapper
/** /**
* *
* *
* @param tableId * @param tableId
* @return * @return
*/ */
@ -28,7 +28,7 @@ public interface GenTableColumnMapper
/** /**
* *
* *
* @param genTableColumn * @param genTableColumn
* @return * @return
*/ */
@ -36,7 +36,7 @@ public interface GenTableColumnMapper
/** /**
* *
* *
* @param genTableColumn * @param genTableColumn
* @return * @return
*/ */
@ -44,7 +44,7 @@ public interface GenTableColumnMapper
/** /**
* *
* *
* @param genTableColumns * @param genTableColumns
* @return * @return
*/ */
@ -52,7 +52,7 @@ public interface GenTableColumnMapper
/** /**
* *
* *
* @param ids ID * @param ids ID
* @return * @return
*/ */

@ -1,18 +1,18 @@
package com.ruoyi.gen.mapper; package com.ruoyi.gen.mapper;
import java.util.List;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface GenTableMapper public interface GenTableMapper {
{
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -20,7 +20,7 @@ public interface GenTableMapper
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -28,7 +28,7 @@ public interface GenTableMapper
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
@ -36,7 +36,7 @@ public interface GenTableMapper
/** /**
* ID * ID
* *
* @param id ID * @param id ID
* @return * @return
*/ */
@ -44,7 +44,7 @@ public interface GenTableMapper
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
@ -52,7 +52,7 @@ public interface GenTableMapper
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -60,7 +60,7 @@ public interface GenTableMapper
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -68,7 +68,7 @@ public interface GenTableMapper
/** /**
* *
* *
* @param ids ID * @param ids ID
* @return * @return
*/ */

@ -1,68 +1,64 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import com.ruoyi.gen.mapper.GenTableColumnMapper; import com.ruoyi.gen.mapper.GenTableColumnMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Service @Service("genTableColumnService")
public class GenTableColumnServiceImpl implements IGenTableColumnService public class GenTableColumnServiceImpl implements IGenTableColumnService {
{ @Autowired
@Autowired private GenTableColumnMapper genTableColumnMapper;
private GenTableColumnMapper genTableColumnMapper;
/** /**
* *
* *
* @param tableId * @param tableId
* @return * @return
*/ */
@Override @Override
public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) {
{ return genTableColumnMapper.selectGenTableColumnListByTableId(tableId);
return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); }
}
/** /**
* *
* *
* @param genTableColumn * @param genTableColumn
* @return * @return
*/ */
@Override @Override
public int insertGenTableColumn(GenTableColumn genTableColumn) public int insertGenTableColumn(GenTableColumn genTableColumn) {
{ return genTableColumnMapper.insertGenTableColumn(genTableColumn);
return genTableColumnMapper.insertGenTableColumn(genTableColumn); }
}
/**
/**
* *
* *
* @param genTableColumn * @param genTableColumn
* @return * @return
*/ */
@Override @Override
public int updateGenTableColumn(GenTableColumn genTableColumn) public int updateGenTableColumn(GenTableColumn genTableColumn) {
{ return genTableColumnMapper.updateGenTableColumn(genTableColumn);
return genTableColumnMapper.updateGenTableColumn(genTableColumn); }
}
/** /**
* *
* *
* @param ids ID * @param ids ID
* @return * @return
*/ */
@Override @Override
public int deleteGenTableColumnByIds(String ids) public int deleteGenTableColumnByIds(String ids) {
{ return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids));
return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); }
}
} }

@ -1,24 +1,5 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.apache.commons.io.IOUtils;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.Constants;
@ -35,15 +16,34 @@ import com.ruoyi.gen.mapper.GenTableMapper;
import com.ruoyi.gen.util.GenUtils; import com.ruoyi.gen.util.GenUtils;
import com.ruoyi.gen.util.VelocityInitializer; import com.ruoyi.gen.util.VelocityInitializer;
import com.ruoyi.gen.util.VelocityUtils; import com.ruoyi.gen.util.VelocityUtils;
import org.apache.commons.io.IOUtils;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
@Service @Service
public class GenTableServiceImpl implements IGenTableService public class GenTableServiceImpl implements IGenTableService {
{
private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
@Autowired @Autowired
@ -54,13 +54,12 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param id ID * @param id ID
* @return * @return
*/ */
@Override @Override
public GenTable selectGenTableById(Long id) public GenTable selectGenTableById(Long id) {
{
GenTable genTable = genTableMapper.selectGenTableById(id); GenTable genTable = genTableMapper.selectGenTableById(id);
setTableFromOptions(genTable); setTableFromOptions(genTable);
return genTable; return genTable;
@ -68,57 +67,51 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@Override @Override
public List<GenTable> selectGenTableList(GenTable genTable) public List<GenTable> selectGenTableList(GenTable genTable) {
{
return genTableMapper.selectGenTableList(genTable); return genTableMapper.selectGenTableList(genTable);
} }
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@Override @Override
public List<GenTable> selectDbTableList(GenTable genTable) public List<GenTable> selectDbTableList(GenTable genTable) {
{
return genTableMapper.selectDbTableList(genTable); return genTableMapper.selectDbTableList(genTable);
} }
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
@Override @Override
public List<GenTable> selectDbTableListByNames(String[] tableNames) public List<GenTable> selectDbTableListByNames(String[] tableNames) {
{
return genTableMapper.selectDbTableListByNames(tableNames); return genTableMapper.selectDbTableListByNames(tableNames);
} }
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@Override @Override
@Transactional @Transactional
public void updateGenTable(GenTable genTable) public void updateGenTable(GenTable genTable) {
{
String options = JSON.toJSONString(genTable.getParams()); String options = JSON.toJSONString(genTable.getParams());
genTable.setOptions(options); genTable.setOptions(options);
int row = genTableMapper.updateGenTable(genTable); int row = genTableMapper.updateGenTable(genTable);
if (row > 0) if (row > 0) {
{ for (GenTableColumn cenTableColumn : genTable.getColumns()) {
for (GenTableColumn cenTableColumn : genTable.getColumns())
{
genTableColumnMapper.updateGenTableColumn(cenTableColumn); genTableColumnMapper.updateGenTableColumn(cenTableColumn);
} }
} }
@ -126,61 +119,53 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param tableIds ID * @param tableIds ID
* @return * @return
*/ */
@Override @Override
@Transactional @Transactional
public void deleteGenTableByIds(Long[] tableIds) public void deleteGenTableByIds(Long[] tableIds) {
{
genTableMapper.deleteGenTableByIds(tableIds); genTableMapper.deleteGenTableByIds(tableIds);
genTableColumnMapper.deleteGenTableColumnByIds(tableIds); genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
} }
/** /**
* *
* *
* @param tableList * @param tableList
*/ */
@Override @Override
@Transactional @Transactional
public void importGenTable(List<GenTable> tableList) public void importGenTable(List<GenTable> tableList) {
{
String operName = SecurityUtils.getUsername(); String operName = SecurityUtils.getUsername();
try try {
{ for (GenTable table : tableList) {
for (GenTable table : tableList)
{
String tableName = table.getTableName(); String tableName = table.getTableName();
GenUtils.initTable(table, operName); GenUtils.initTable(table, operName);
int row = genTableMapper.insertGenTable(table); int row = genTableMapper.insertGenTable(table);
if (row > 0) if (row > 0) {
{
// 保存列信息 // 保存列信息
List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
for (GenTableColumn column : genTableColumns) for (GenTableColumn column : genTableColumns) {
{
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column); genTableColumnMapper.insertGenTableColumn(column);
} }
} }
} }
} } catch (Exception e) {
catch (Exception e)
{
throw new CustomException("导入失败:" + e.getMessage()); throw new CustomException("导入失败:" + e.getMessage());
} }
} }
/** /**
* *
* *
* @param tableId * @param tableId
* @return * @return
*/ */
public Map<String, String> previewCode(Long tableId) @Override
{ public Map<String, String> previewCode(Long tableId) {
Map<String, String> dataMap = new LinkedHashMap<>(); Map<String, String> dataMap = new LinkedHashMap<>();
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableById(tableId); GenTable table = genTableMapper.selectGenTableById(tableId);
@ -193,8 +178,7 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) for (String template : templates) {
{
// 渲染模板 // 渲染模板
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
@ -206,13 +190,12 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
@Override @Override
public byte[] downloadCode(String tableName) public byte[] downloadCode(String tableName) {
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream); ZipOutputStream zip = new ZipOutputStream(outputStream);
generatorCode(tableName, zip); generatorCode(tableName, zip);
@ -222,12 +205,11 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param tableName * @param tableName
*/ */
@Override @Override
public void generatorCode(String tableName) public void generatorCode(String tableName) {
{
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
// 查询列信息 // 查询列信息
@ -240,21 +222,16 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) for (String template : templates) {
{ if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm"))
{
// 渲染模板 // 渲染模板
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw); tpl.merge(context, sw);
try try {
{
String path = getGenPath(table, template); String path = getGenPath(table, template);
FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
} } catch (IOException e) {
catch (IOException e)
{
throw new CustomException("渲染模板失败,表名:" + table.getTableName()); throw new CustomException("渲染模板失败,表名:" + table.getTableName());
} }
} }
@ -263,13 +240,12 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param tableName * @param tableName
*/ */
@Override @Override
@Transactional @Transactional
public void synchDb(String tableName) public void synchDb(String tableName) {
{
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
List<GenTableColumn> tableColumns = table.getColumns(); List<GenTableColumn> tableColumns = table.getColumns();
List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
@ -278,33 +254,29 @@ public class GenTableServiceImpl implements IGenTableService
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
dbTableColumns.forEach(column -> { dbTableColumns.forEach(column -> {
if (!tableColumnNames.contains(column.getColumnName())) if (!tableColumnNames.contains(column.getColumnName())) {
{
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column); genTableColumnMapper.insertGenTableColumn(column);
} }
}); });
List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
if (StringUtils.isNotEmpty(delColumns)) if (StringUtils.isNotEmpty(delColumns)) {
{
genTableColumnMapper.deleteGenTableColumns(delColumns); genTableColumnMapper.deleteGenTableColumns(delColumns);
} }
} }
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
@Override @Override
public byte[] downloadCode(String[] tableNames) public byte[] downloadCode(String[] tableNames) {
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream); ZipOutputStream zip = new ZipOutputStream(outputStream);
for (String tableName : tableNames) for (String tableName : tableNames) {
{
generatorCode(tableName, zip); generatorCode(tableName, zip);
} }
IOUtils.closeQuietly(zip); IOUtils.closeQuietly(zip);
@ -314,8 +286,7 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
*/ */
private void generatorCode(String tableName, ZipOutputStream zip) private void generatorCode(String tableName, ZipOutputStream zip) {
{
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
// 查询列信息 // 查询列信息
@ -328,23 +299,19 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) for (String template : templates) {
{
// 渲染模板 // 渲染模板
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw); tpl.merge(context, sw);
try try {
{
// 添加到zip // 添加到zip
zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
IOUtils.write(sw.toString(), zip, Constants.UTF8); IOUtils.write(sw.toString(), zip, Constants.UTF8);
IOUtils.closeQuietly(sw); IOUtils.closeQuietly(sw);
zip.flush(); zip.flush();
zip.closeEntry(); zip.closeEntry();
} } catch (IOException e) {
catch (IOException e)
{
log.error("渲染模板失败,表名:" + table.getTableName(), e); log.error("渲染模板失败,表名:" + table.getTableName(), e);
} }
} }
@ -352,26 +319,19 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param genTable * @param genTable
*/ */
@Override @Override
public void validateEdit(GenTable genTable) public void validateEdit(GenTable genTable) {
{ if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) {
if (GenConstants.TPL_TREE.equals(genTable.getTplCategory()))
{
String options = JSON.toJSONString(genTable.getParams()); String options = JSON.toJSONString(genTable.getParams());
JSONObject paramsObj = JSONObject.parseObject(options); JSONObject paramsObj = JSONObject.parseObject(options);
if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) {
{
throw new CustomException("树编码字段不能为空"); throw new CustomException("树编码字段不能为空");
} } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) {
else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE)))
{
throw new CustomException("树父编码字段不能为空"); throw new CustomException("树父编码字段不能为空");
} } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) {
else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME)))
{
throw new CustomException("树名称字段不能为空"); throw new CustomException("树名称字段不能为空");
} }
} }
@ -379,42 +339,36 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param table * @param table
* @param columns * @param columns
*/ */
public void setPkColumn(GenTable table, List<GenTableColumn> columns) public void setPkColumn(GenTable table, List<GenTableColumn> columns) {
{ for (GenTableColumn column : columns) {
for (GenTableColumn column : columns) if (column.isPk()) {
{
if (column.isPk())
{
table.setPkColumn(column); table.setPkColumn(column);
break; break;
} }
} }
if (StringUtils.isNull(table.getPkColumn())) if (StringUtils.isNull(table.getPkColumn())) {
{
table.setPkColumn(columns.get(0)); table.setPkColumn(columns.get(0));
} }
} }
/** /**
* *
* *
* @param genTable * @param genTable
*/ */
public void setTableFromOptions(GenTable genTable) public void setTableFromOptions(GenTable genTable) {
{
JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions()); JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions());
if (StringUtils.isNotNull(paramsObj)) if (StringUtils.isNotNull(paramsObj)) {
{
String treeCode = paramsObj.getString(GenConstants.TREE_CODE); String treeCode = paramsObj.getString(GenConstants.TREE_CODE);
String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE);
String treeName = paramsObj.getString(GenConstants.TREE_NAME); String treeName = paramsObj.getString(GenConstants.TREE_NAME);
String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID); String parentMenuId = paramsObj.getString(GenConstants.PARENT_MENU_ID);
String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME); String parentMenuName = paramsObj.getString(GenConstants.PARENT_MENU_NAME);
genTable.setTreeCode(treeCode); genTable.setTreeCode(treeCode);
genTable.setTreeParentCode(treeParentCode); genTable.setTreeParentCode(treeParentCode);
genTable.setTreeName(treeName); genTable.setTreeName(treeName);
@ -425,16 +379,14 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* *
* *
* @param table * @param table
* @param template * @param template
* @return * @return
*/ */
public static String getGenPath(GenTable table, String template) public static String getGenPath(GenTable table, String template) {
{
String genPath = table.getGenPath(); String genPath = table.getGenPath();
if (StringUtils.equals(genPath, "/")) if (StringUtils.equals(genPath, "/")) {
{
return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
} }
return genPath + File.separator + VelocityUtils.getFileName(template, table); return genPath + File.separator + VelocityUtils.getFileName(template, table);

@ -1,18 +1,18 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import java.util.List;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface IGenTableColumnService public interface IGenTableColumnService {
{
/** /**
* *
* *
* @param tableId * @param tableId
* @return * @return
*/ */
@ -20,7 +20,7 @@ public interface IGenTableColumnService
/** /**
* *
* *
* @param genTableColumn * @param genTableColumn
* @return * @return
*/ */
@ -28,7 +28,7 @@ public interface IGenTableColumnService
/** /**
* *
* *
* @param genTableColumn * @param genTableColumn
* @return * @return
*/ */
@ -36,7 +36,7 @@ public interface IGenTableColumnService
/** /**
* *
* *
* @param ids ID * @param ids ID
* @return * @return
*/ */

@ -1,19 +1,19 @@
package com.ruoyi.gen.service; package com.ruoyi.gen.service;
import com.ruoyi.gen.domain.GenTable;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.ruoyi.gen.domain.GenTable;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public interface IGenTableService public interface IGenTableService {
{
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -21,7 +21,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -29,7 +29,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
@ -37,7 +37,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param id ID * @param id ID
* @return * @return
*/ */
@ -45,7 +45,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
@ -53,7 +53,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param tableIds ID * @param tableIds ID
* @return * @return
*/ */
@ -61,14 +61,14 @@ public interface IGenTableService
/** /**
* *
* *
* @param tableList * @param tableList
*/ */
public void importGenTable(List<GenTable> tableList); public void importGenTable(List<GenTable> tableList);
/** /**
* *
* *
* @param tableId * @param tableId
* @return * @return
*/ */
@ -76,7 +76,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
@ -84,7 +84,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
@ -92,14 +92,14 @@ public interface IGenTableService
/** /**
* *
* *
* @param tableName * @param tableName
*/ */
public void synchDb(String tableName); public void synchDb(String tableName);
/** /**
* *
* *
* @param tableNames * @param tableNames
* @return * @return
*/ */
@ -107,7 +107,7 @@ public interface IGenTableService
/** /**
* *
* *
* @param genTable * @param genTable
*/ */
public void validateEdit(GenTable genTable); public void validateEdit(GenTable genTable);

@ -1,25 +1,24 @@
package com.ruoyi.gen.util; package com.ruoyi.gen.util;
import java.util.Arrays;
import org.apache.commons.lang3.RegExUtils;
import com.ruoyi.common.core.constant.GenConstants; import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.gen.config.GenConfig; import com.ruoyi.gen.config.GenConfig;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import org.apache.commons.lang3.RegExUtils;
import java.util.Arrays;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenUtils public class GenUtils {
{
/** /**
* *
*/ */
public static void initTable(GenTable genTable, String operName) public static void initTable(GenTable genTable, String operName) {
{
genTable.setClassName(convertClassName(genTable.getTableName())); genTable.setClassName(convertClassName(genTable.getTableName()));
genTable.setPackageName(GenConfig.getPackageName()); genTable.setPackageName(GenConfig.getPackageName());
genTable.setModuleName(getModuleName(GenConfig.getPackageName())); genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
@ -32,8 +31,7 @@ public class GenUtils
/** /**
* *
*/ */
public static void initColumnField(GenTableColumn column, GenTable table) public static void initColumnField(GenTableColumn column, GenTable table) {
{
String dataType = getDbType(column.getColumnType()); String dataType = getDbType(column.getColumnType());
String columnName = column.getColumnName(); String columnName = column.getColumnName();
column.setTableId(table.getTableId()); column.setTableId(table.getTableId());
@ -41,37 +39,29 @@ public class GenUtils
// 设置java字段名 // 设置java字段名
column.setJavaField(StringUtils.toCamelCase(columnName)); column.setJavaField(StringUtils.toCamelCase(columnName));
if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType)) if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType)) {
{
column.setJavaType(GenConstants.TYPE_STRING); column.setJavaType(GenConstants.TYPE_STRING);
// 字符串长度超过500设置为文本域 // 字符串长度超过500设置为文本域
Integer columnLength = getColumnLength(column.getColumnType()); Integer columnLength = getColumnLength(column.getColumnType());
String htmlType = columnLength >= 500 ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; String htmlType = columnLength >= 500 ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT;
column.setHtmlType(htmlType); column.setHtmlType(htmlType);
} } else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) {
else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType))
{
column.setJavaType(GenConstants.TYPE_DATE); column.setJavaType(GenConstants.TYPE_DATE);
column.setHtmlType(GenConstants.HTML_DATETIME); column.setHtmlType(GenConstants.HTML_DATETIME);
} } else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) {
else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType))
{
column.setHtmlType(GenConstants.HTML_INPUT); column.setHtmlType(GenConstants.HTML_INPUT);
// 如果是浮点型 // 如果是浮点型
String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) {
{
column.setJavaType(GenConstants.TYPE_BIGDECIMAL); column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
} }
// 如果是整形 // 如果是整形
else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) {
{
column.setJavaType(GenConstants.TYPE_INTEGER); column.setJavaType(GenConstants.TYPE_INTEGER);
} }
// 长整形 // 长整形
else else {
{
column.setJavaType(GenConstants.TYPE_LONG); column.setJavaType(GenConstants.TYPE_LONG);
} }
} }
@ -80,69 +70,59 @@ public class GenUtils
column.setIsInsert(GenConstants.REQUIRE); column.setIsInsert(GenConstants.REQUIRE);
// 编辑字段 // 编辑字段
if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) {
{
column.setIsEdit(GenConstants.REQUIRE); column.setIsEdit(GenConstants.REQUIRE);
} }
// 列表字段 // 列表字段
if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) {
{
column.setIsList(GenConstants.REQUIRE); column.setIsList(GenConstants.REQUIRE);
} }
// 查询字段 // 查询字段
if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) {
{
column.setIsQuery(GenConstants.REQUIRE); column.setIsQuery(GenConstants.REQUIRE);
} }
// 查询字段类型 // 查询字段类型
if (StringUtils.endsWithIgnoreCase(columnName, "name")) if (StringUtils.endsWithIgnoreCase(columnName, "name")) {
{
column.setQueryType(GenConstants.QUERY_LIKE); column.setQueryType(GenConstants.QUERY_LIKE);
} }
// 状态字段设置单选框 // 状态字段设置单选框
if (StringUtils.endsWithIgnoreCase(columnName, "status")) if (StringUtils.endsWithIgnoreCase(columnName, "status")) {
{
column.setHtmlType(GenConstants.HTML_RADIO); column.setHtmlType(GenConstants.HTML_RADIO);
} }
// 类型&性别字段设置下拉框 // 类型&性别字段设置下拉框
else if (StringUtils.endsWithIgnoreCase(columnName, "type") else if (StringUtils.endsWithIgnoreCase(columnName, "type")
|| StringUtils.endsWithIgnoreCase(columnName, "sex")) || StringUtils.endsWithIgnoreCase(columnName, "sex")) {
{
column.setHtmlType(GenConstants.HTML_SELECT); column.setHtmlType(GenConstants.HTML_SELECT);
} }
// 文件字段设置上传控件 // 文件字段设置上传控件
else if (StringUtils.endsWithIgnoreCase(columnName, "image")) else if (StringUtils.endsWithIgnoreCase(columnName, "image")) {
{
column.setHtmlType(GenConstants.HTML_UPLOAD_IMAGE); column.setHtmlType(GenConstants.HTML_UPLOAD_IMAGE);
} }
// 内容字段设置富文本控件 // 内容字段设置富文本控件
else if (StringUtils.endsWithIgnoreCase(columnName, "content")) else if (StringUtils.endsWithIgnoreCase(columnName, "content")) {
{
column.setHtmlType(GenConstants.HTML_EDITOR); column.setHtmlType(GenConstants.HTML_EDITOR);
} }
} }
/** /**
* *
* *
* @param arr * @param arr
* @param targetValue * @param targetValue
* @return * @return
*/ */
public static boolean arraysContains(String[] arr, String targetValue) public static boolean arraysContains(String[] arr, String targetValue) {
{
return Arrays.asList(arr).contains(targetValue); return Arrays.asList(arr).contains(targetValue);
} }
/** /**
* *
* *
* @param packageName * @param packageName
* @return * @return
*/ */
public static String getModuleName(String packageName) public static String getModuleName(String packageName) {
{
int lastIndex = packageName.lastIndexOf("."); int lastIndex = packageName.lastIndexOf(".");
int nameLength = packageName.length(); int nameLength = packageName.length();
String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength); String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength);
@ -151,12 +131,11 @@ public class GenUtils
/** /**
* *
* *
* @param tableName * @param tableName
* @return * @return
*/ */
public static String getBusinessName(String tableName) public static String getBusinessName(String tableName) {
{
int lastIndex = tableName.lastIndexOf("_"); int lastIndex = tableName.lastIndexOf("_");
int nameLength = tableName.length(); int nameLength = tableName.length();
String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength); String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength);
@ -165,16 +144,14 @@ public class GenUtils
/** /**
* Java * Java
* *
* @param tableName * @param tableName
* @return * @return
*/ */
public static String convertClassName(String tableName) public static String convertClassName(String tableName) {
{
boolean autoRemovePre = GenConfig.getAutoRemovePre(); boolean autoRemovePre = GenConfig.getAutoRemovePre();
String tablePrefix = GenConfig.getTablePrefix(); String tablePrefix = GenConfig.getTablePrefix();
if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) {
{
String[] searchList = StringUtils.split(tablePrefix, ","); String[] searchList = StringUtils.split(tablePrefix, ",");
tableName = replaceFirst(tableName, searchList); tableName = replaceFirst(tableName, searchList);
} }
@ -183,18 +160,15 @@ public class GenUtils
/** /**
* *
* *
* @param replacementm * @param replacementm
* @param searchList * @param searchList
* @return * @return
*/ */
public static String replaceFirst(String replacementm, String[] searchList) public static String replaceFirst(String replacementm, String[] searchList) {
{
String text = replacementm; String text = replacementm;
for (String searchString : searchList) for (String searchString : searchList) {
{ if (replacementm.startsWith(searchString)) {
if (replacementm.startsWith(searchString))
{
text = replacementm.replaceFirst(searchString, ""); text = replacementm.replaceFirst(searchString, "");
break; break;
} }
@ -204,48 +178,39 @@ public class GenUtils
/** /**
* *
* *
* @param text * @param text
* @return * @return
*/ */
public static String replaceText(String text) public static String replaceText(String text) {
{
return RegExUtils.replaceAll(text, "(?:表|若依)", ""); return RegExUtils.replaceAll(text, "(?:表|若依)", "");
} }
/** /**
* *
* *
* @param columnType * @param columnType
* @return * @return
*/ */
public static String getDbType(String columnType) public static String getDbType(String columnType) {
{ if (StringUtils.indexOf(columnType, "(") > 0) {
if (StringUtils.indexOf(columnType, "(") > 0)
{
return StringUtils.substringBefore(columnType, "("); return StringUtils.substringBefore(columnType, "(");
} } else {
else
{
return columnType; return columnType;
} }
} }
/** /**
* *
* *
* @param columnType * @param columnType
* @return * @return
*/ */
public static Integer getColumnLength(String columnType) public static Integer getColumnLength(String columnType) {
{ if (StringUtils.indexOf(columnType, "(") > 0) {
if (StringUtils.indexOf(columnType, "(") > 0)
{
String length = StringUtils.substringBetween(columnType, "(", ")"); String length = StringUtils.substringBetween(columnType, "(", ")");
return Integer.valueOf(length); return Integer.valueOf(length);
} } else {
else
{
return 0; return 0;
} }
} }

@ -1,24 +1,22 @@
package com.ruoyi.gen.util; package com.ruoyi.gen.util;
import java.util.Properties;
import org.apache.velocity.app.Velocity;
import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.Constants;
import org.apache.velocity.app.Velocity;
import java.util.Properties;
/** /**
* VelocityEngine * VelocityEngine
* *
* @author ruoyi * @author ruoyi
*/ */
public class VelocityInitializer public class VelocityInitializer {
{
/** /**
* vm * vm
*/ */
public static void initVelocity() public static void initVelocity() {
{
Properties p = new Properties(); Properties p = new Properties();
try try {
{
// 加载classpath目录下的vm文件 // 加载classpath目录下的vm文件
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
// 定义字符集 // 定义字符集
@ -26,9 +24,7 @@ public class VelocityInitializer
p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8); p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8);
// 初始化Velocity引擎指定配置Properties // 初始化Velocity引擎指定配置Properties
Velocity.init(p); Velocity.init(p);
} } catch (Exception e) {
catch (Exception e)
{
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }

@ -1,39 +1,46 @@
package com.ruoyi.gen.util; package com.ruoyi.gen.util;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import org.apache.velocity.VelocityContext;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.core.constant.GenConstants; import com.ruoyi.common.core.constant.GenConstants;
import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.gen.domain.GenTable; import com.ruoyi.gen.domain.GenTable;
import com.ruoyi.gen.domain.GenTableColumn; import com.ruoyi.gen.domain.GenTableColumn;
import lombok.extern.slf4j.Slf4j;
import org.apache.velocity.VelocityContext;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
/** /**
* *
* *
* @author ruoyi * @author ruoyi
*/ */
public class VelocityUtils @Slf4j
{ public class VelocityUtils {
/** 项目空间路径 */ /**
private static final String PROJECT_PATH = "main/java"; *
*/
private static final String PROJECT_PATH = "java";
/**
* mybatis
*/
private static final String MYBATIS_PATH = "resources/mapper";
/** mybatis空间路径 */ /**
private static final String MYBATIS_PATH = "main/resources/mapper"; *
*/
/** 默认上级菜单,系统工具 */
private static final String DEFAULT_PARENT_MENU_ID = "3"; private static final String DEFAULT_PARENT_MENU_ID = "3";
/** /**
* *
* *
* @return * @return
*/ */
public static VelocityContext prepareContext(GenTable genTable) public static VelocityContext prepareContext(GenTable genTable) {
{
String moduleName = genTable.getModuleName(); String moduleName = genTable.getModuleName();
String businessName = genTable.getBusinessName(); String businessName = genTable.getBusinessName();
String packageName = genTable.getPackageName(); String packageName = genTable.getPackageName();
@ -59,23 +66,20 @@ public class VelocityUtils
velocityContext.put("columns", genTable.getColumns()); velocityContext.put("columns", genTable.getColumns());
velocityContext.put("table", genTable); velocityContext.put("table", genTable);
setMenuVelocityContext(velocityContext, genTable); setMenuVelocityContext(velocityContext, genTable);
if (GenConstants.TPL_TREE.equals(tplCategory)) if (GenConstants.TPL_TREE.equals(tplCategory)) {
{
setTreeVelocityContext(velocityContext, genTable); setTreeVelocityContext(velocityContext, genTable);
} }
return velocityContext; return velocityContext;
} }
public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) public static void setMenuVelocityContext(VelocityContext context, GenTable genTable) {
{
String options = genTable.getOptions(); String options = genTable.getOptions();
JSONObject paramsObj = JSONObject.parseObject(options); JSONObject paramsObj = JSONObject.parseObject(options);
String parentMenuId = getParentMenuId(paramsObj); String parentMenuId = getParentMenuId(paramsObj);
context.put("parentMenuId", parentMenuId); context.put("parentMenuId", parentMenuId);
} }
public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) public static void setTreeVelocityContext(VelocityContext context, GenTable genTable) {
{
String options = genTable.getOptions(); String options = genTable.getOptions();
JSONObject paramsObj = JSONObject.parseObject(options); JSONObject paramsObj = JSONObject.parseObject(options);
String treeCode = getTreecode(paramsObj); String treeCode = getTreecode(paramsObj);
@ -86,23 +90,20 @@ public class VelocityUtils
context.put("treeParentCode", treeParentCode); context.put("treeParentCode", treeParentCode);
context.put("treeName", treeName); context.put("treeName", treeName);
context.put("expandColumn", getExpandColumn(genTable)); context.put("expandColumn", getExpandColumn(genTable));
if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) {
{
context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE)); context.put("tree_parent_code", paramsObj.getString(GenConstants.TREE_PARENT_CODE));
} }
if (paramsObj.containsKey(GenConstants.TREE_NAME)) if (paramsObj.containsKey(GenConstants.TREE_NAME)) {
{
context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME)); context.put("tree_name", paramsObj.getString(GenConstants.TREE_NAME));
} }
} }
/** /**
* *
* *
* @return * @return
*/ */
public static List<String> getTemplateList(String tplCategory) public static List<String> getTemplateList(String tplCategory) {
{
List<String> templates = new ArrayList<String>(); List<String> templates = new ArrayList<String>();
templates.add("vm/java/domain.java.vm"); templates.add("vm/java/domain.java.vm");
templates.add("vm/java/mapper.java.vm"); templates.add("vm/java/mapper.java.vm");
@ -112,12 +113,9 @@ public class VelocityUtils
templates.add("vm/xml/mapper.xml.vm"); templates.add("vm/xml/mapper.xml.vm");
templates.add("vm/sql/sql.vm"); templates.add("vm/sql/sql.vm");
templates.add("vm/js/api.js.vm"); templates.add("vm/js/api.js.vm");
if (GenConstants.TPL_CRUD.equals(tplCategory)) if (GenConstants.TPL_CRUD.equals(tplCategory)) {
{
templates.add("vm/vue/index.vue.vm"); templates.add("vm/vue/index.vue.vm");
} } else if (GenConstants.TPL_TREE.equals(tplCategory)) {
else if (GenConstants.TPL_TREE.equals(tplCategory))
{
templates.add("vm/vue/index-tree.vue.vm"); templates.add("vm/vue/index-tree.vue.vm");
} }
return templates; return templates;
@ -126,8 +124,7 @@ public class VelocityUtils
/** /**
* *
*/ */
public static String getFileName(String template, GenTable genTable) public static String getFileName(String template, GenTable genTable) {
{
// 文件名称 // 文件名称
String fileName = ""; String fileName = "";
// 包路径 // 包路径
@ -143,44 +140,25 @@ public class VelocityUtils
String mybatisPath = MYBATIS_PATH + "/" + moduleName; String mybatisPath = MYBATIS_PATH + "/" + moduleName;
String vuePath = "vue"; String vuePath = "vue";
if (template.contains("domain.java.vm")) if (template.contains("domain.java.vm")) {
{
fileName = StringUtils.format("{}/domain/{}.java", javaPath, className); fileName = StringUtils.format("{}/domain/{}.java", javaPath, className);
} } else if (template.contains("mapper.java.vm")) {
else if (template.contains("mapper.java.vm"))
{
fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className); fileName = StringUtils.format("{}/mapper/{}Mapper.java", javaPath, className);
} } else if (template.contains("service.java.vm")) {
else if (template.contains("service.java.vm")) fileName = StringUtils.format("{}/service/{}Service.java", javaPath, className);
{ } else if (template.contains("serviceImpl.java.vm")) {
fileName = StringUtils.format("{}/service/I{}Service.java", javaPath, className);
}
else if (template.contains("serviceImpl.java.vm"))
{
fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className); fileName = StringUtils.format("{}/service/impl/{}ServiceImpl.java", javaPath, className);
} } else if (template.contains("controller.java.vm")) {
else if (template.contains("controller.java.vm"))
{
fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className); fileName = StringUtils.format("{}/controller/{}Controller.java", javaPath, className);
} } else if (template.contains("mapper.xml.vm")) {
else if (template.contains("mapper.xml.vm"))
{
fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className); fileName = StringUtils.format("{}/{}Mapper.xml", mybatisPath, className);
} } else if (template.contains("sql.vm")) {
else if (template.contains("sql.vm"))
{
fileName = businessName + "Menu.sql"; fileName = businessName + "Menu.sql";
} } else if (template.contains("api.js.vm")) {
else if (template.contains("api.js.vm"))
{
fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName); fileName = StringUtils.format("{}/api/{}/{}.js", vuePath, moduleName, businessName);
} } else if (template.contains("index.vue.vm")) {
else if (template.contains("index.vue.vm"))
{
fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
} } else if (template.contains("index-tree.vue.vm")) {
else if (template.contains("index-tree.vue.vm"))
{
fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName); fileName = StringUtils.format("{}/views/{}/{}/index.vue", vuePath, moduleName, businessName);
} }
return fileName; return fileName;
@ -188,12 +166,11 @@ public class VelocityUtils
/** /**
* *
* *
* @param packageName * @param packageName
* @return * @return
*/ */
public static String getPackagePrefix(String packageName) public static String getPackagePrefix(String packageName) {
{
int lastIndex = packageName.lastIndexOf("."); int lastIndex = packageName.lastIndexOf(".");
String basePackage = StringUtils.substring(packageName, 0, lastIndex); String basePackage = StringUtils.substring(packageName, 0, lastIndex);
return basePackage; return basePackage;
@ -201,22 +178,17 @@ public class VelocityUtils
/** /**
* *
* *
* @param columns * @param columns
* @return * @return
*/ */
public static HashSet<String> getImportList(List<GenTableColumn> columns) public static HashSet<String> getImportList(List<GenTableColumn> columns) {
{
HashSet<String> importList = new HashSet<String>(); HashSet<String> importList = new HashSet<String>();
for (GenTableColumn column : columns) for (GenTableColumn column : columns) {
{ if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType())) {
if (!column.isSuperColumn() && GenConstants.TYPE_DATE.equals(column.getJavaType()))
{
importList.add("java.util.Date"); importList.add("java.util.Date");
importList.add("com.fasterxml.jackson.annotation.JsonFormat"); importList.add("com.fasterxml.jackson.annotation.JsonFormat");
} } else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType())) {
else if (!column.isSuperColumn() && GenConstants.TYPE_BIGDECIMAL.equals(column.getJavaType()))
{
importList.add("java.math.BigDecimal"); importList.add("java.math.BigDecimal");
} }
} }
@ -225,26 +197,23 @@ public class VelocityUtils
/** /**
* *
* *
* @param moduleName * @param moduleName
* @param businessName * @param businessName
* @return * @return
*/ */
public static String getPermissionPrefix(String moduleName, String businessName) public static String getPermissionPrefix(String moduleName, String businessName) {
{
return StringUtils.format("{}:{}", moduleName, businessName); return StringUtils.format("{}:{}", moduleName, businessName);
} }
/** /**
* ID * ID
* *
* @param paramsObj * @param paramsObj
* @return ID * @return ID
*/ */
public static String getParentMenuId(JSONObject paramsObj) public static String getParentMenuId(JSONObject paramsObj) {
{ if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID)) {
if (StringUtils.isNotEmpty(paramsObj) && paramsObj.containsKey(GenConstants.PARENT_MENU_ID))
{
return paramsObj.getString(GenConstants.PARENT_MENU_ID); return paramsObj.getString(GenConstants.PARENT_MENU_ID);
} }
return DEFAULT_PARENT_MENU_ID; return DEFAULT_PARENT_MENU_ID;
@ -252,14 +221,12 @@ public class VelocityUtils
/** /**
* *
* *
* @param paramsObj * @param paramsObj
* @return * @return
*/ */
public static String getTreecode(JSONObject paramsObj) public static String getTreecode(JSONObject paramsObj) {
{ if (paramsObj.containsKey(GenConstants.TREE_CODE)) {
if (paramsObj.containsKey(GenConstants.TREE_CODE))
{
return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE)); return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_CODE));
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
@ -267,14 +234,12 @@ public class VelocityUtils
/** /**
* *
* *
* @param paramsObj * @param paramsObj
* @return * @return
*/ */
public static String getTreeParentCode(JSONObject paramsObj) public static String getTreeParentCode(JSONObject paramsObj) {
{ if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE)) {
if (paramsObj.containsKey(GenConstants.TREE_PARENT_CODE))
{
return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE)); return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_PARENT_CODE));
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
@ -282,14 +247,12 @@ public class VelocityUtils
/** /**
* *
* *
* @param paramsObj * @param paramsObj
* @return * @return
*/ */
public static String getTreeName(JSONObject paramsObj) public static String getTreeName(JSONObject paramsObj) {
{ if (paramsObj.containsKey(GenConstants.TREE_NAME)) {
if (paramsObj.containsKey(GenConstants.TREE_NAME))
{
return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME)); return StringUtils.toCamelCase(paramsObj.getString(GenConstants.TREE_NAME));
} }
return StringUtils.EMPTY; return StringUtils.EMPTY;
@ -297,24 +260,20 @@ public class VelocityUtils
/** /**
* *
* *
* @param genTable * @param genTable
* @return * @return
*/ */
public static int getExpandColumn(GenTable genTable) public static int getExpandColumn(GenTable genTable) {
{
String options = genTable.getOptions(); String options = genTable.getOptions();
JSONObject paramsObj = JSONObject.parseObject(options); JSONObject paramsObj = JSONObject.parseObject(options);
String treeName = paramsObj.getString(GenConstants.TREE_NAME); String treeName = paramsObj.getString(GenConstants.TREE_NAME);
int num = 0; int num = 0;
for (GenTableColumn column : genTable.getColumns()) for (GenTableColumn column : genTable.getColumns()) {
{ if (column.isList()) {
if (column.isList())
{
num++; num++;
String columnName = column.getColumnName(); String columnName = column.getColumnName();
if (columnName.equals(treeName)) if (columnName.equals(treeName)) {
{
break; break;
} }
} }

@ -16,7 +16,7 @@ import com.ruoyi.common.log.annotation.Log;
import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.log.enums.BusinessType;
import com.ruoyi.common.security.annotation.PreAuthorize; import com.ruoyi.common.security.annotation.PreAuthorize;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service; import ${packageName}.service.${ClassName}Service;
import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.controller.BaseController;
import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.utils.poi.ExcelUtil; import com.ruoyi.common.core.utils.poi.ExcelUtil;
@ -36,7 +36,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo;
public class ${ClassName}Controller extends BaseController public class ${ClassName}Controller extends BaseController
{ {
@Autowired @Autowired
private I${ClassName}Service ${className}Service; private ${ClassName}Service ${className}Service;
/** /**
* 查询${functionName}列表 * 查询${functionName}列表

@ -11,7 +11,7 @@ import com.ruoyi.common.core.web.domain.BaseEntity;
#elseif($table.tree) #elseif($table.tree)
import com.ruoyi.common.core.web.domain.TreeEntity; import com.ruoyi.common.core.web.domain.TreeEntity;
#end #end
import lombok.extern.slf4j.Slf4j;
/** /**
* ${functionName}对象 ${tableName} * ${functionName}对象 ${tableName}
* *
@ -23,6 +23,7 @@ import com.ruoyi.common.core.web.domain.TreeEntity;
#elseif($table.tree) #elseif($table.tree)
#set($Entity="TreeEntity") #set($Entity="TreeEntity")
#end #end
@Slf4j
public class ${ClassName} extends ${Entity} public class ${ClassName} extends ${Entity}
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ -50,36 +51,4 @@ public class ${ClassName} extends ${Entity}
#end #end
#end #end
#foreach ($column in $columns) }
#if(!$table.isSuperColumn($column.javaField))
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
public void set${AttrName}($column.javaType $column.javaField)
{
this.$column.javaField = $column.javaField;
}
public $column.javaType get${AttrName}()
{
return $column.javaField;
}
#end
#end
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
#foreach ($column in $columns)
#if($column.javaField.length() > 2 && $column.javaField.substring(1,2).matches("[A-Z]"))
#set($AttrName=$column.javaField)
#else
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#end
.append("${column.javaField}", get${AttrName}())
#end
.toString();
}
}

@ -9,7 +9,7 @@ import ${packageName}.domain.${ClassName};
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
public interface I${ClassName}Service public interface ${ClassName}Service
{ {
/** /**
* 查询${functionName} * 查询${functionName}

@ -11,7 +11,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import ${packageName}.mapper.${ClassName}Mapper; import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName}; import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service; import ${packageName}.service.${ClassName}Service;
/** /**
* ${functionName}Service业务层处理 * ${functionName}Service业务层处理
@ -19,8 +19,8 @@ import ${packageName}.service.I${ClassName}Service;
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
@Service @Service("${moduleName}${ClassName}Service")
public class ${ClassName}ServiceImpl implements I${ClassName}Service public class ${ClassName}ServiceImpl implements ${ClassName}Service
{ {
@Autowired @Autowired
private ${ClassName}Mapper ${className}Mapper; private ${ClassName}Mapper ${className}Mapper;

@ -1,7 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="${packageName}.mapper.${ClassName}Mapper"> <mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${ClassName}" id="${ClassName}Result"> <resultMap type="${ClassName}" id="${ClassName}Result">

Loading…
Cancel
Save