解决代码生成bug

pull/1/head
zccbbg 2 years ago
parent 32bd4c9ca0
commit a851070cca

@ -169,31 +169,31 @@ http-pool:
max-total: 200 max-total: 200
gen: gen:
# 作者 # 作者
author: author: zcc
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.cyl.demo packageName: com.cyl.mall
# 自动去除表前缀默认是false # 自动去除表前缀默认是false
autoRemovePre: true autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔) # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: cscdc_ tablePrefix: mall_
# 一级权限名 # 一级权限名
rootPermission: cscdc rootPermission: mall
# 模板根路径 # 模板根路径
templateRootPath: vm templateRootPath: vm
# 路径 # 路径
path: path:
# 后端根目录 # 后端根目录
backPath: C:\Users\zccbbg\ichengle\ruoyi-vue-fork\ backPath: D:\java_project\mall\ruoyi-mall
# 后端 service 模块名 # 后端 service 模块名
serviceModule: mybatis-plus-demo serviceModule: mall
# 后端 api 模块名, 默认与 service 一致 # 后端 api 模块名, 默认与 service 一致
apiModule: mybatis-plus-api apiModule: mall
# 前端根目录 # 前端根目录
frontPath: C:\Users\zccbbg\code\cdc_front_cs\ frontPath: D:\java_project\mall\ruoyi-mall-vue
# 前端 api 目录 # 前端 api 目录
frontApiPath: src/api/emergencyhandle frontApiPath: src/api/mall
# 前端 view 目录 # 前端 view 目录
frontViewPath: src/views/emergencyhandle frontViewPath: src/views/mall
# sql 目录 # sql 目录
sql: sql sql: sql
# 环境变量 # 环境变量
@ -206,7 +206,7 @@ gen:
fileMap: fileMap:
"api.js.vm": "${frontPath}/${frontApiPath}/${className}.js" "api.js.vm": "${frontPath}/${frontApiPath}/${className}.js"
"controller.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/controller/${ClassName}Controller.java" "controller.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/controller/${ClassName}Controller.java"
"service.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/service/I${ClassName}Service.java" "service.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/service/${ClassName}Service.java"
"mapper.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/mapper/${ClassName}Mapper.java" "mapper.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/mapper/${ClassName}Mapper.java"
"convert.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/convert/${ClassName}Convert.java" "convert.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/convert/${ClassName}Convert.java"
"example.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/pojo/example/${ClassName}Example.java" "example.java.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/${packageName}/pojo/example/${ClassName}Example.java"
@ -218,6 +218,32 @@ gen:
"sql.vm": "${backPath}/sql/${className}.sql" "sql.vm": "${backPath}/sql/${className}.sql"
"h2.sql.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/db/${tableName}-h2.sql" "h2.sql.vm": "${backPath}/${serviceModule}/${MAIN_JAVA}/db/${tableName}-h2.sql"
"add.vue.vm": "${frontPath}/${frontViewPath}/Add${ClassName}.vue" "add.vue.vm": "${frontPath}/${frontViewPath}/Add${ClassName}.vue"
"index.vue.vm": "${frontPath}/${frontViewPath}/index.vue" "index.vue.vm": "${frontPath}/${frontViewPath}/${className}/index.vue"
"index-tree.vue.vm": "${frontPath}/${frontViewPath}/index.vue" "index-tree.vue.vm": "${frontPath}/${frontViewPath}/index.vue"
"sub-domain.java.vm": "${frontPath}/${frontViewPath}/Sub${ClassName}.vue" "sub-domain.java.vm": "${frontPath}/${frontViewPath}/Sub${ClassName}.vue"
templates:
- vm/js/api.js.vm
- vm/java/controller.java.vm
- vm/java/service.java.vm
- vm/java/mapper.java.vm
- vm/java/convert.java.vm
- vm/java/query.java.vm
- vm/java/dto.java.vm
- vm/java/vo.java.vm
- vm/java/domain.java.vm
- vm/xml/mapper.xml.vm
- vm/sql/sql.vm
testTemplates:
# - vm/sql/h2.sql.vm
crudTemplates:
# - vm/vue/add.vue.vm
- vm/vue/index.vue.vm
treeTemplates:
# - vm/vue/index-tree.vue.vm
subTemplates:
# - vm/vue/index.vue.vm
# - vm/java/sub-domain.java.vm
type2component:
"String": "a-input("
"LocalDate": "a-date-picker("
"LocalDateTime": "a-date-picker(format=\"YYYY-MM-DD HH:mm\""

@ -1,34 +1,27 @@
package com.ruoyi.generator.controller; package com.ruoyi.generator.controller;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
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.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTable;
import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.domain.GenTableColumn;
import com.ruoyi.generator.service.IGenTableColumnService; import com.ruoyi.generator.service.IGenTableColumnService;
import com.ruoyi.generator.service.IGenTableService; import com.ruoyi.generator.service.IGenTableService;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
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;
/** /**
* *
@ -61,12 +54,12 @@ public class GenController extends BaseController
* *
*/ */
@PreAuthorize("@ss.hasPermi('tool:gen:query')") @PreAuthorize("@ss.hasPermi('tool:gen:query')")
@GetMapping(value = "/{talbleId}") @GetMapping(value = "/{tableId}")
public AjaxResult getInfo(@PathVariable Long talbleId) public AjaxResult getInfo(@PathVariable Long tableId)
{ {
GenTable table = genTableService.selectGenTableById(talbleId); GenTable table = genTableService.selectGenTableById(tableId);
List<GenTable> tables = genTableService.selectGenTableAll(); List<GenTable> tables = genTableService.selectGenTableAll();
List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(talbleId); List<GenTableColumn> list = genTableColumnService.selectGenTableColumnListByTableId(tableId);
Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
map.put("info", table); map.put("info", table);
map.put("rows", list); map.put("rows", list);

@ -184,24 +184,55 @@ public class GenTableServiceImpl implements IGenTableService {
Map<String, String> dataMap = new LinkedHashMap<>(); Map<String, String> dataMap = new LinkedHashMap<>();
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableById(tableId); GenTable table = genTableMapper.selectGenTableById(tableId);
Result result = getResult(table);
for (String template : result.templates) {
if (template.endsWith(".java.vm")) {
result.context.put("fullPackage", getFullPackage(template));
}
// 渲染模板
StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(result.context, sw);
dataMap.put(template, sw.toString());
}
return dataMap;
}
private Result getResult(GenTable table) {
initNullValue(table);
// 设置主子表信息 // 设置主子表信息
setSubTable(table); setSubTable(table);
setTableFromOptions(table);
// 设置主键列信息 // 设置主键列信息
setPkColumn(table); setPkColumn(table);
// 初始化 Class 信息
genContext.prop2path.put("ClassName", table.getClassName());
genContext.prop2path.put("className", StrUtil.lowerFirst(table.getClassName()));
genContext.prop2path.put("tableName", table.getTableName());
// 初始化模板
VelocityInitializer.initVelocity(); VelocityInitializer.initVelocity();
// 初始化模板变量
VelocityContext context = VelocityUtils.prepareContext(table); VelocityContext context = VelocityUtils.prepareContext(table);
context.put("env", genContext.genConfig.getEnv());
context.put("_fullClass", fillHolder(table, genContext.fullQualifiedClassHolder));
context.put("_className", fillHolder(table, genContext.className));
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) { Result result = new Result(context, templates);
// 渲染模板 return result;
StringWriter sw = new StringWriter(); }
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw); private static class Result {
dataMap.put(template, sw.toString()); public final VelocityContext context;
public final List<String> templates;
public Result(VelocityContext context, List<String> templates) {
this.context = context;
this.templates = templates;
} }
return dataMap;
} }
/** /**
@ -228,38 +259,15 @@ public class GenTableServiceImpl implements IGenTableService {
public void generatorCode(String tableName) { public void generatorCode(String tableName) {
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
initNullValue(table); Result result = getResult(table);
// 设置主子表信息 for (String template : result.templates) {
setSubTable(table);
setTableFromOptions(table);
// 设置主键列信息
setPkColumn(table);
// 初始化 Class 信息
genContext.prop2path.put("ClassName", table.getClassName());
genContext.prop2path.put("className", StrUtil.lowerFirst(table.getClassName()));
genContext.prop2path.put("tableName", table.getTableName());
genContext.prop2path.put("moduleName", table.getModuleName());
// 初始化模板
VelocityInitializer.initVelocity();
// 初始化模板变量
VelocityContext context = VelocityUtils.prepareContext(table);
context.put("env", genContext.genConfig.getEnv());
context.put("_fullClass", fillHolder(table, genContext.fullQualifiedClassHolder));
context.put("_className", fillHolder(table, genContext.className));
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) {
if (template.endsWith(".java.vm")) { if (template.endsWith(".java.vm")) {
context.put("fullPackage", getFullPackage(template)); result.context.put("fullPackage", getFullPackage(template));
} }
// 渲染模板 // 渲染模板
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(result.context, sw);
String path = null; String path = null;
try { try {
path = generatePath(template, table); path = generatePath(template, table);
@ -390,22 +398,15 @@ 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);
// 设置主子表信息 Result result = getResult(table);
setSubTable(table); for (String template : result.templates) {
// 设置主键列信息 if (template.endsWith(".java.vm")) {
setPkColumn(table); result.context.put("fullPackage", getFullPackage(template));
}
VelocityInitializer.initVelocity();
VelocityContext context = VelocityUtils.prepareContext(table);
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
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(result.context, sw);
try { try {
// 添加到zip // 添加到zip
zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));

@ -191,7 +191,13 @@ public class GenUtils {
* @return * @return
*/ */
public static String getBusinessName(String tableName) { public static String getBusinessName(String tableName) {
return StrUtil.toCamelCase(tableName); boolean autoRemovePre = genConfig.isAutoRemovePre();
String tablePrefix = genConfig.getTablePrefix();
if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) {
String[] searchList = StringUtils.split(tablePrefix, ",");
tableName = replaceFirst(tableName, searchList);
}
return StringUtils.convertToCamelCase(tableName);
} }
/** /**

@ -1,5 +1,6 @@
package com.ruoyi.generator.util; package com.ruoyi.generator.util;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.constant.GenConstants;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
@ -163,7 +164,7 @@ public class VelocityUtils {
// 大写类名 // 大写类名
String className = genTable.getClassName(); String className = genTable.getClassName();
// 业务名称 // 业务名称
String businessName = genTable.getBusinessName(); String businessName = StrUtil.lowerFirst(genTable.getBusinessName());
String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/"); String javaPath = PROJECT_PATH + "/" + StringUtils.replace(packageName, ".", "/");
String mybatisPath = MYBATIS_PATH + "/" + moduleName; String mybatisPath = MYBATIS_PATH + "/" + moduleName;

@ -1,12 +1,13 @@
# 代码生成
gen: gen:
# 作者 # 作者
author: zcc author: zcc
# 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
packageName: com.cyl.mall packageName: com.cyl.mall
# 自动去除表前缀默认是false # 自动去除表前缀默认是false
autoRemovePre: false autoRemovePre: true
# 表前缀(生成类名不会包含表前缀,多个用逗号分隔) # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)
tablePrefix: mall_ tablePrefix: ums_
# 一级权限名 # 一级权限名
rootPermission: mall rootPermission: mall
# 模板根路径
templateRootPath: vm

@ -1,6 +1,13 @@
package ${packageName}.controller; package ${fullPackage};
import java.util.List; import java.util.List;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Page;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -13,94 +20,74 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import ${packageName}.domain.${ClassName}; import ${_fullClass.convert};
import ${packageName}.service.I${ClassName}Service; import ${_fullClass.domain};
import ${_fullClass.query};
import ${_fullClass.service};
import ${_fullClass.vo};
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
#if($table.crud || $table.sub)
import com.ruoyi.common.core.page.TableDataInfo;
#elseif($table.tree)
#end
/** /**
* ${functionName}Controller * ${functionName}Controller
* *
* @author ${author} * @author ${author}
* @date ${datetime} * @date ${datetime}
*/ */
@Api(description ="${functionName}接口列表")
@RestController @RestController
@RequestMapping("/${moduleName}/${businessName}") @RequestMapping("/${moduleName}/${className}")
public class ${ClassName}Controller extends BaseController { public class ${_className.controller} extends BaseController {
@Autowired @Autowired
private I${ClassName}Service ${className}Service; private ${_className.service} service;
@Autowired
private ${_className.convert} convert;
/** @ApiOperation("查询${functionName}列表")
* 查询${functionName}列表
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:list')")
@GetMapping("/list") @PostMapping("/list")
#if($table.crud || $table.sub) public ResponseEntity<Page<${_className.domain}>> list(@RequestBody ${_className.query} query, Pageable page) {
public TableDataInfo list(${ClassName} ${className}) { List<${_className.domain}> list = service.selectList(query, page);
startPage(); return ResponseEntity.ok(new PageImpl<>(list, page, ((com.github.pagehelper.Page)list).getTotal()));
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return getDataTable(list);
}
#elseif($table.tree)
public AjaxResult list(${ClassName} ${className}) {
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className});
return AjaxResult.success(list);
} }
#end
/** @ApiOperation("导出${functionName}列表")
* 导出${functionName}列表
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:export')")
@Log(title = "${functionName}", businessType = BusinessType.EXPORT) @Log(title = "${functionName}", businessType = BusinessType.EXPORT)
@GetMapping("/export") @GetMapping("/export")
public AjaxResult export(${ClassName} ${className}) { public ResponseEntity<String> export(${_className.query} query) {
List<${ClassName}> list = ${className}Service.select${ClassName}List(${className}); List<${ClassName}> list = service.selectList(query, null);
ExcelUtil<${ClassName}> util = new ExcelUtil<${ClassName}>(${ClassName}.class); ExcelUtil<${_className.vo}> util = new ExcelUtil<>(${_className.vo}.class);
return util.exportExcel(list, "${functionName}数据"); return ResponseEntity.ok(util.writeExcel(convert.dos2vos(list), "${functionName}数据"));
} }
/** @ApiOperation("获取${functionName}详细信息")
* 获取${functionName}详细信息
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:query')")
@GetMapping(value = "/{${pkColumn.javaField}}") @GetMapping(value = "/{${pkColumn.javaField}}")
public AjaxResult getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) { public ResponseEntity<${ClassName}> getInfo(@PathVariable("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}) {
return AjaxResult.success(${className}Service.select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaField})); return ResponseEntity.ok(service.selectBy${pkColumn.capJavaField}(${pkColumn.javaField}));
} }
/** @ApiOperation("新增${functionName}")
* 新增${functionName}
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:add')")
@Log(title = "${functionName}", businessType = BusinessType.INSERT) @Log(title = "${functionName}", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody ${ClassName} ${className}) { public ResponseEntity<Integer> add(@RequestBody ${ClassName} ${className}) {
return toAjax(${className}Service.insert${ClassName}(${className})); return ResponseEntity.ok(service.insert(${className}));
} }
/** @ApiOperation("修改${functionName}")
* 修改${functionName}
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:edit')")
@Log(title = "${functionName}", businessType = BusinessType.UPDATE) @Log(title = "${functionName}", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody ${ClassName} ${className}) { public ResponseEntity<Integer> edit(@RequestBody ${ClassName} ${className}) {
return toAjax(${className}Service.update${ClassName}(${className})); return ResponseEntity.ok(service.update(${className}));
} }
/** @ApiOperation("删除${functionName}")
* 删除${functionName}
*/
@PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')") @PreAuthorize("@ss.hasPermi('${permissionPrefix}:remove')")
@Log(title = "${functionName}", businessType = BusinessType.DELETE) @Log(title = "${functionName}", businessType = BusinessType.DELETE)
@DeleteMapping("/{${pkColumn.javaField}s}") @DeleteMapping("/{${pkColumn.javaField}s}")
public AjaxResult remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { public ResponseEntity<Integer> remove(@PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) {
return toAjax(${className}Service.delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaField}s)); return ResponseEntity.ok(service.deleteBy${pkColumn.capJavaField}s(${pkColumn.javaField}s));
} }
} }

@ -1,11 +1,10 @@
package ${packageName}.convert; package ${fullPackage};
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import ${packageName}.model.entity.${ClassName}; import ${_fullClass.domain};
import ${packageName}.pojo.dto.${ClassName}DTO; import ${_fullClass.dto};
#if($table.sub) import ${_fullClass.vo};
import ${packageName}.convert.${subClassName}Convert; import java.util.List;
#end
/** /**
* ${functionName} DO <=> DTO <=> VO / BO / Query * ${functionName} DO <=> DTO <=> VO / BO / Query
* *
@ -25,4 +24,6 @@ public interface ${ClassName}Convert {
* @return DO * @return DO
*/ */
${ClassName} dto2do(${ClassName}DTO source); ${ClassName} dto2do(${ClassName}DTO source);
List<${_className.vo}> dos2vos(List<${_className.domain}> list);
} }

@ -1,33 +1,33 @@
package ${packageName}.model.entity; package ${fullPackage};
#foreach ($import in $importList) #foreach ($import in $importList)
import ${import}; import ${import};
#end #end
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#if(($table.crud || $table.sub) && $table.audit == 1) #if(($table.crud || $table.sub) && $table.audit == 1)
import com.bryx.core.common.base.entity.BaseAudit; import ${env.baseAudit};
#elseif($table.tree)
import com.ruoyi.common.core.domain.TreeEntity;
#end #end
import lombok.Data; import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableName;
/** /**
* ${functionName}对象 ${tableName} * ${functionName}对象 ${tableName}
* *
* @author ${author} * @author ${author}
*/ */
@ApiModel(description="${functionName}对象")
#if(($table.crud || $table.sub) && $table.audit == 1) #if(($table.crud || $table.sub) && $table.audit == 1)
#set($Entity="BaseAudit") #set($Entity="BaseAudit")
#elseif($table.tree)
#set($Entity="TreeEntity")
#end #end
@Data @Data
@TableName("${tableName}")
public class ${ClassName}#if($Entity) extends ${Entity}#end { public class ${ClassName}#if($Entity) extends ${Entity}#end {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
#foreach ($column in $columns) #foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField)) #if(!$table.isSuperColumn($column.javaField))
/** $column.columnComment */ @ApiModelProperty("$column.columnComment")
#if($column.list) #if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
@ -38,7 +38,6 @@ public class ${ClassName}#if($Entity) extends ${Entity}#end {
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.isDate()) #elseif($column.isDate())
@JsonFormat(pattern = "${column.dateFormat}")
@Excel(name = "${comment}", width = 30, dateFormat = "${column.dateFormat}") @Excel(name = "${comment}", width = 30, dateFormat = "${column.dateFormat}")
#else #else
@Excel(name = "${comment}") @Excel(name = "${comment}")

@ -1,10 +1,10 @@
package ${packageName}.pojo.dto; package ${fullPackage};
#foreach ($import in $importList) #foreach ($import in $importList)
import ${import}; import ${import};
#end #end
#if( ${table.audit} == 1 ) #if( ${table.audit} == 1 )
import com.bryx.core.common.base.entity.BaseAudit; import ${env.baseAudit};
#end #end
import lombok.Data; import lombok.Data;
/** /**
@ -15,7 +15,7 @@ import lombok.Data;
@Data @Data
public class ${ClassName}DTO#if( ${table.audit} == 1 ) extends BaseAudit#end { public class ${ClassName}DTO#if( ${table.audit} == 1 ) extends BaseAudit#end {
#foreach ($column in $columns) #foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField)) #if(!$table.isSuperColumn($column.javaField) and $column.javaField != "delFlag")
private $column.javaType $column.javaField; private $column.javaType $column.javaField;
#end #end
#end #end

@ -0,0 +1,305 @@
package ${fullPackage};
#foreach ($import in $importList)
import ${import};
#end
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.time.LocalDate;
import java.time.LocalDateTime;
public class ${ClassName}Example {
protected String orderByClause;
protected boolean distinct;
protected List<Criteria> oredCriteria;
public ${ClassName}Example() {
oredCriteria = new ArrayList<>();
}
public void setOrderByClause(String orderByClause) {
this.orderByClause = orderByClause;
}
public String getOrderByClause() {
return orderByClause;
}
public void setDistinct(boolean distinct) {
this.distinct = distinct;
}
public boolean isDistinct() {
return distinct;
}
public List<Criteria> getOredCriteria() {
return oredCriteria;
}
public void or(Criteria criteria) {
oredCriteria.add(criteria);
}
public Criteria or() {
Criteria criteria = createCriteriaInternal();
oredCriteria.add(criteria);
return criteria;
}
public Criteria createCriteria() {
Criteria criteria = createCriteriaInternal();
if (oredCriteria.size() == 0) {
oredCriteria.add(criteria);
}
return criteria;
}
protected Criteria createCriteriaInternal() {
Criteria criteria = new Criteria();
return criteria;
}
public void clear() {
oredCriteria.clear();
orderByClause = null;
distinct = false;
}
protected abstract static class GeneratedCriteria {
protected List<Criterion> criteria;
protected GeneratedCriteria() {
super();
criteria = new ArrayList<>();
}
public boolean isValid() {
return criteria.size() > 0;
}
public List<Criterion> getAllCriteria() {
return criteria;
}
public List<Criterion> getCriteria() {
return criteria;
}
protected void addCriterion(String condition) {
if (condition == null) {
throw new RuntimeException("Value for condition cannot be null");
}
criteria.add(new Criterion(condition));
}
protected void addCriterion(String condition, Object value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value));
}
protected void addCriterion(String condition, Object value1, Object value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
criteria.add(new Criterion(condition, value1, value2));
}
protected void addCriterionForJDBCDate(String condition, Date value, String property) {
if (value == null) {
throw new RuntimeException("Value for " + property + " cannot be null");
}
addCriterion(condition, new java.sql.Date(value.getTime()), property);
}
protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
if (values == null || values.size() == 0) {
throw new RuntimeException("Value list for " + property + " cannot be null or empty");
}
List<java.sql.Date> dateList = new ArrayList<>();
Iterator<Date> iter = values.iterator();
while (iter.hasNext()) {
dateList.add(new java.sql.Date(iter.next().getTime()));
}
addCriterion(condition, dateList, property);
}
protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
if (value1 == null || value2 == null) {
throw new RuntimeException("Between values for " + property + " cannot be null");
}
addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
}
#foreach ($column in $columns)
public Criteria and${column.capJavaField}IsNull() {
addCriterion("${column.columnName} is null");
return (Criteria) this;
}
public Criteria and${column.capJavaField}IsNotNull() {
addCriterion("${column.columnName} is not null");
return (Criteria) this;
}
public Criteria and${column.capJavaField}EqualTo(${column.javaType} value) {
addCriterion("${column.columnName} =", value, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}NotEqualTo(${column.javaType} value) {
addCriterion("${column.columnName} <>", value, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}GreaterThan(${column.javaType} value) {
addCriterion("${column.columnName} >", value, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}GreaterThanOrEqualTo(${column.javaType} value) {
addCriterion("${column.columnName} >=", value, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}LessThan(${column.javaType} value) {
addCriterion("${column.columnName} <", value, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}LessThanOrEqualTo(${column.javaType} value) {
addCriterion("${column.columnName} <=", value, "${column.javaField}");
return (Criteria) this;
}
#if($column.javaType == 'String')
public Criteria and${column.capJavaField}Like(${column.javaType} value) {
addCriterion("${column.columnName} like", value, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}NotLike(${column.javaType} value) {
addCriterion("${column.columnName} not like", value, "${column.javaField}");
return (Criteria) this;
}
#end
public Criteria and${column.capJavaField}In(List<${column.javaType}> values) {
addCriterion("${column.columnName} in", values, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}NotIn(List<${column.javaType}> values) {
addCriterion("${column.columnName} not in", values, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}Between(${column.javaType} value1, ${column.javaType} value2) {
addCriterion("${column.columnName} between", value1, value2, "${column.javaField}");
return (Criteria) this;
}
public Criteria and${column.capJavaField}NotBetween(${column.javaType} value1, ${column.javaType} value2) {
addCriterion("${column.columnName} not between", value1, value2, "${column.javaField}");
return (Criteria) this;
}
#end
}
public static class Criteria extends GeneratedCriteria {
protected Criteria() {
super();
}
}
public static class Criterion {
private String condition;
private Object value;
private Object secondValue;
private boolean noValue;
private boolean singleValue;
private boolean betweenValue;
private boolean listValue;
private String typeHandler;
public String getCondition() {
return condition;
}
public Object getValue() {
return value;
}
public Object getSecondValue() {
return secondValue;
}
public boolean isNoValue() {
return noValue;
}
public boolean isSingleValue() {
return singleValue;
}
public boolean isBetweenValue() {
return betweenValue;
}
public boolean isListValue() {
return listValue;
}
public String getTypeHandler() {
return typeHandler;
}
protected Criterion(String condition) {
super();
this.condition = condition;
this.typeHandler = null;
this.noValue = true;
}
protected Criterion(String condition, Object value, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.typeHandler = typeHandler;
if (value instanceof List<?>) {
this.listValue = true;
} else {
this.singleValue = true;
}
}
protected Criterion(String condition, Object value) {
this(condition, value, null);
}
protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
super();
this.condition = condition;
this.value = value;
this.secondValue = secondValue;
this.typeHandler = typeHandler;
this.betweenValue = true;
}
protected Criterion(String condition, Object value, Object secondValue) {
this(condition, value, secondValue, null);
}
}
}

@ -1,97 +1,28 @@
package ${packageName}.mapper; package ${fullPackage};
import java.util.List; import java.util.List;
import ${packageName}.domain.${ClassName}; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
#if($table.sub) import org.apache.ibatis.annotations.Param;
import ${packageName}.domain.${subClassName}; import ${_fullClass.domain};
#end
/** /**
* ${functionName}Mapper接口 * ${functionName}Mapper接口
* *
* @author ${author} * @author ${author}
*/ */
public interface ${ClassName}Mapper { public interface ${ClassName}Mapper extends BaseMapper<${ClassName}> {
/**
* 查询${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName}
*/
${ClassName} selectBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/** /**
* 查询${functionName}列表 * 查询${functionName}列表
* *
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return ${functionName}集合 * @return ${functionName}集合
*/ */
List<${ClassName}> selectList(${ClassName} ${className}); List<${ClassName}> selectByEntity(${ClassName} ${className});
/**
* 新增${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
int insert(${ClassName} ${className});
/**
* 修改${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
int update(${ClassName} ${className});
/**
* 删除${functionName}
*
* @param ${pkColumn.javaField} ${functionName}主键
* @return 结果
*/
int deleteBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField});
/**
* 批量删除${functionName}
*
* @param ${pkColumn.javaField}s 需要删除的数据主键集合
* @return 结果
*/
int deleteBy${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/**
* 更新或插入${functionName}
*
* @param ${className} ${functionName}
* @return 结果
*/
int insertOrUpdate(${ClassName} ${className});
#if($table.sub)
/** /**
* 批量删除${subTable.functionName} * 批量软删除
* * @param ids
* @param ${pkColumn.javaField}s 需要删除的数据主键集合 * @return
* @return 结果 */
*/ int updateDelFlagByIds(@Param("ids") Long[] ids);
int delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaType}[] ${pkColumn.javaField}s);
/**
* 批量新增${subTable.functionName}
*
* @param ${subclassName}List ${subTable.functionName}列表
* @return 结果
*/
int batch${subClassName}(List<${subClassName}> ${subclassName}List);
/**
* 通过${functionName}主键删除${subTable.functionName}信息
*
* @param ${pkColumn.javaField} ${functionName}ID
* @return 结果
*/
int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField});
#end
} }

@ -1,38 +1,32 @@
package ${packageName}.pojo.query; package ${fullPackage};
import com.ruoyi.common.core.domain.IQuery;
import ${packageName}.domain.${ClassName};
import lombok.Setter;
import java.util.HashMap; #foreach ($import in $importList)
import java.util.Map; import ${import};
#end
import lombok.Data;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
/** /**
* ${functionName} 查询 对象 * ${functionName} 查询 对象
* *
* @author ${author} * @author ${author}
*/ */
@Setter @ApiModel(description="${functionName} 查询 对象")
public class ${ClassName}Query extends ${ClassName} implements IQuery { @Data
/** public class ${_className.query} {
* 搜索值 #foreach($column in $columns)
*/ #if($column.query)
private String searchValue; ## 根据查询类型生成 EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围
## 范围查询, 使用数组实现
#if($column.queryType == 'BETWEEN')
@ApiModelProperty("${column.genLabel()} 范围")
private ${column.javaType}[] ${column.javaField}${column.queryField};
#else
@ApiModelProperty("${column.genLabel()} 精确匹配")
private ${column.javaType} ${column.javaField}${column.queryField};
#end
/** #end
* 请求参数 #end
*/
private Map<String, Object> params;
@Override
public String getSearchValue() {
return this.searchValue;
}
@Override
public Map<String, Object> getParams() {
if (params == null) {
params = new HashMap<>();
}
return params;
}
} }

@ -1,29 +1,85 @@
package ${packageName}.service; package ${fullPackage};
#foreach ($import in $importList)
import ${import};
#end
import java.util.Arrays;
import java.util.List; import java.util.List;
import ${packageName}.domain.${ClassName}; #if($table.hasDate())
#foreach($date in $table.dateImports())
import $date;
#end
#end
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import ${_fullClass.mapper};
import #evaluate(${_fullClass.domain});
import #evaluate(${_fullClass.query});
/** /**
* ${functionName}Service接口 * ${functionName}Service业务层处理
*
* *
* @author ${author} * @author ${author}
*/ */
public interface I${ClassName}Service { @Service
public class ${ClassName}Service {
@Autowired
private ${_className.mapper} ${className}Mapper;
/** /**
* 查询${functionName} * 查询${functionName}
* *
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField} ${functionName}主键
* @return ${functionName} * @return ${functionName}
*/ */
${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); public ${ClassName} selectBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
return ${className}Mapper.selectById(${pkColumn.javaField});
}
/** /**
* 查询${functionName}列表 * 查询${functionName}列表
* *
* @param ${className} ${functionName} * @param query 查询条件
* @return ${functionName}集合 * @param page 分页条件
* @return ${functionName}
*/ */
List<${ClassName}> select${ClassName}List(${ClassName} ${className}); public List<${_className.domain}> selectList(${_className.query} query, Pageable page) {
if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<${_className.domain}> qw = new QueryWrapper<>();
qw.eq("del_flag",0);
#foreach($column in $columns)
#if($column.query)
## 根据查询类型生成 EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围
## 范围查询, 使用数组实现
#if($column.queryType == 'BETWEEN')
${column.javaType}[] ${column.javaField}${column.queryField} = query.get${column.capJavaField}${column.queryField}();
if (${column.javaField}${column.queryField} != null && ${column.javaField}${column.queryField}.length == 2) {
${column.javaType} start = ${column.javaField}${column.queryField}[0];
if (#if($column.javaType == 'String')!StringUtils.isEmpty(start)#{else}start != null#end) {
qw.ge("${column.columnName}", start);
}
${column.javaType} end = ${column.javaField}Range[0];
if (#if($column.javaType == 'String')!StringUtils.isEmpty(end) #{else}end != null#end) {
qw.le("${column.columnName}", end);
}
}
#else
${column.javaType} ${column.javaField}${column.queryField} = query.get${column.capJavaField}${column.queryField}();
if (#if($column.javaType == 'String')!StringUtils.isEmpty(${column.javaField}${column.queryField})#{else}${column.javaField}${column.queryField} != null#end) {
qw.${column.queryMethod}("${column.columnName}", ${column.javaField}${column.queryField});
}
#end
#end
#end
return ${className}Mapper.selectList(qw);
}
/** /**
* 新增${functionName} * 新增${functionName}
@ -31,7 +87,24 @@ public interface I${ClassName}Service {
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
int insert${ClassName}(${ClassName} ${className}); #if($table.sub)
@Transactional
#end
public int insert(${ClassName} ${className}) {
${className}.setDelFlag(0);
#foreach ($column in $columns)
#if($column.javaField == 'createTime')
${className}.setCreateTime(#if($column.javaType == "Date")new Date()#else${column.javaType}.now()#end);
#end
#end
#if($table.sub)
int rows = ${className}Mapper.insert(${className});
insert${subClassName}(${className});
return rows;
#else
return ${className}Mapper.insert(${className});
#end
}
/** /**
* 修改${functionName} * 修改${functionName}
@ -39,15 +112,29 @@ public interface I${ClassName}Service {
* @param ${className} ${functionName} * @param ${className} ${functionName}
* @return 结果 * @return 结果
*/ */
int update${ClassName}(${ClassName} ${className}); #if($table.sub)
@Transactional
#end
public int update(${ClassName} ${className}) {
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className});
#end
return ${className}Mapper.updateById(${className});
}
/** /**
* 批量删除${functionName} * 批量删除${functionName}
* *
* @param ${pkColumn.javaField}s 需要删除的${functionName}主键集合 * @param ${pkColumn.javaField}s 需要删除的${functionName}主键
* @return 结果 * @return 结果
*/ */
int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s); #if($table.sub)
@Transactional
#end
public int deleteBy${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) {
return ${className}Mapper.updateDelFlagByIds(${pkColumn.javaField}s);
}
/** /**
* 删除${functionName}信息 * 删除${functionName}信息
@ -55,5 +142,8 @@ public interface I${ClassName}Service {
* @param ${pkColumn.javaField} ${functionName}主键 * @param ${pkColumn.javaField} ${functionName}主键
* @return 结果 * @return 结果
*/ */
int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}); public int deleteBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
Long[] ${pkColumn.javaField}s = {${pkColumn.javaField}};
return ${className}Mapper.updateDelFlagByIds(${pkColumn.javaField}s);
}
} }

@ -1,22 +1,22 @@
package ${packageName}.service.impl; package ${fullPackage};
import java.util.Arrays;
import java.util.List; import java.util.List;
#if($table.hasDate()) #if($table.hasDate())
#foreach($date in $table.dateImports()) #foreach($date in $table.dateImports())
import $date; import $date;
#end #end
#end #end
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
#if($table.sub) import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList; import ${_fullClass.mapper};
import com.ruoyi.common.utils.StringUtils; import ${_fullClass.domain};
import org.springframework.transaction.annotation.Transactional; import ${_fullClass.query};
import ${packageName}.domain.${subClassName}; import ${_fullClass.service};
#end
import ${packageName}.mapper.${ClassName}Mapper;
import ${packageName}.domain.${ClassName};
import ${packageName}.service.I${ClassName}Service;
/** /**
* ${functionName}Service业务层处理 * ${functionName}Service业务层处理
@ -24,9 +24,9 @@ import ${packageName}.service.I${ClassName}Service;
* @author ${author} * @author ${author}
*/ */
@Service @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;
/** /**
* 查询${functionName} * 查询${functionName}
@ -35,19 +35,48 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
* @return ${functionName} * @return ${functionName}
*/ */
@Override @Override
public ${ClassName} select${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { public ${ClassName} selectBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
return ${className}Mapper.selectBy${pkColumn.capJavaField}(${pkColumn.javaField}); return ${className}Mapper.selectBy${pkColumn.capJavaField}(${pkColumn.javaField});
} }
/** /**
* 查询${functionName}列表 * 查询${functionName}列表
* *
* @param ${className} ${functionName} * @param query 查询条件
* @param page 分页条件
* @return ${functionName} * @return ${functionName}
*/ */
@Override @Override
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) { public List<${_className.domain}> selectList(${_className.query} query, Pageable page) {
return ${className}Mapper.selectList(${className}); if (page != null) {
PageHelper.startPage(page.getPageNumber() + 1, page.getPageSize());
}
QueryWrapper<${_className.domain}> qw = new QueryWrapper<>();
#foreach($column in $columns)
#if($column.query)
## 根据查询类型生成 EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围
## 范围查询, 使用数组实现
#if($column.queryType == 'BETWEEN')
${column.javaType}[] ${column.javaField}${column.queryField} = query.get${column.capJavaField}${column.queryField}();
if (${column.javaField}${column.queryField} != null && ${column.javaField}${column.queryField}.length == 2) {
${column.javaType} start = ${column.javaField}${column.queryField}[0];
if (#if($column.javaType == 'String')!StringUtils.isEmpty(start)#{else}start != null#end) {
qw.ge("${column.columnName}", start);
}
${column.javaType} end = ${column.javaField}Range[0];
if (#if($column.javaType == 'String')!StringUtils.isEmpty(end) #{else}end != null#end) {
qw.le("${column.columnName}", end);
}
}
#else
${column.javaType} ${column.javaField}${column.queryField} = query.get${column.capJavaField}${column.queryField}();
if (#if($column.javaType == 'String')!StringUtils.isEmpty(${column.javaField}${column.queryField})#{else}${column.javaField}${column.queryField} != null#end) {
qw.${column.queryMethod}("${column.columnName}", ${column.javaField}${column.queryField});
}
#end
#end
#end
return ${className}Mapper.selectList(qw);
} }
/** /**
@ -60,7 +89,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
@Transactional @Transactional
#end #end
@Override @Override
public int insert${ClassName}(${ClassName} ${className}) { public int insert(${ClassName} ${className}) {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.javaField == 'createTime') #if($column.javaField == 'createTime')
${className}.setCreateTime(#if($column.javaType == "Date")new Date()#else${column.javaType}.now()#end); ${className}.setCreateTime(#if($column.javaType == "Date")new Date()#else${column.javaType}.now()#end);
@ -85,17 +114,12 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
@Transactional @Transactional
#end #end
@Override @Override
public int update${ClassName}(${ClassName} ${className}) { public int update(${ClassName} ${className}) {
#foreach ($column in $columns)
#if($column.javaField == 'updateTime')
${className}.setUpdateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub) #if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}()); ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className}); insert${subClassName}(${className});
#end #end
return ${className}Mapper.update(${className}); return ${className}Mapper.updateById(${className});
} }
/** /**
@ -108,11 +132,11 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
@Transactional @Transactional
#end #end
@Override @Override
public int delete${ClassName}By${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) { public int deleteBy${pkColumn.capJavaField}s(${pkColumn.javaType}[] ${pkColumn.javaField}s) {
#if($table.sub) #if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s); ${className}Mapper.delete${subClassName}By${subTableFkClassName}s(${pkColumn.javaField}s);
#end #end
return ${className}Mapper.deleteBy${pkColumn.capJavaField}s(${pkColumn.javaField}s); return ${className}Mapper.deleteBatchIds(Arrays.asList(${pkColumn.javaField}s));
} }
/** /**
@ -122,32 +146,10 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service {
* @return 结果 * @return 结果
*/ */
@Override @Override
public int delete${ClassName}By${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) { public int deleteBy${pkColumn.capJavaField}(${pkColumn.javaType} ${pkColumn.javaField}) {
#if($table.sub) #if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField}); ${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
#end #end
return ${className}Mapper.deleteBy${pkColumn.capJavaField}(${pkColumn.javaField}); return ${className}Mapper.deleteById(${pkColumn.javaField});
}
#if($table.sub)
/**
* 新增${subTable.functionName}信息
*
* @param ${className} ${functionName}对象
*/
public void insert${subClassName}(${ClassName} ${className}) {
List<${subClassName}> ${subclassName}List = ${className}.get${subClassName}List();
${pkColumn.javaType} ${pkColumn.javaField} = ${className}.get${pkColumn.capJavaField}();
if (StringUtils.isNotNull(${subclassName}List)) {
List<${subClassName}> list = new ArrayList<${subClassName}>();
for (${subClassName} ${subclassName} : ${subclassName}List) {
${subclassName}.set${subTableFkClassName}(${pkColumn.javaField});
list.add(${subclassName});
}
if (list.size() > 0) {
${className}Mapper.batch${subClassName}(list);
}
}
} }
#end
} }

@ -1,10 +1,12 @@
package ${packageName}.pojo.vo; package ${fullPackage};
#foreach ($import in $importList) #foreach ($import in $importList)
import ${import}; import ${import};
#end #end
import com.ruoyi.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
#if(${table.audit} == 1) #if(${table.audit} == 1)
import com.bryx.core.common.base.entity.BaseAudit; import ${env.baseAudit};
#end #end
#if($table.sub) #if($table.sub)
import ${packageName}.pojo.dto.${subClassName}DTO; import ${packageName}.pojo.dto.${subClassName}DTO;
@ -18,7 +20,24 @@ import lombok.Data;
@Data @Data
public class ${ClassName}VO #if(${table.audit} == 1)extends BaseAudit#end { public class ${ClassName}VO #if(${table.audit} == 1)extends BaseAudit#end {
#foreach ($column in $columns) #foreach ($column in $columns)
#if(!$table.isSuperColumn($column.javaField)) #if(!$table.isSuperColumn($column.javaField) and $column.javaField != "delFlag")
/** $column.columnComment */
#if($column.list)
#set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex))
#else
#set($comment=$column.columnComment)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.isDate())
@JsonFormat(pattern = "${column.dateFormat}")
@Excel(name = "${comment}", width = 30, dateFormat = "${column.dateFormat}")
#else
@Excel(name = "${comment}")
#end
#end
private $column.javaType $column.javaField; private $column.javaType $column.javaField;
#end #end
#end #end

@ -1,18 +1,19 @@
import request from '@/utils/request' import request from '@/utils/request'
// 查询${functionName}列表 // 查询${functionName}列表
export function list${BusinessName}(query) { export function list${BusinessName}(query, pageReq) {
return request({ return request({
url: '/${moduleName}/${businessName}/list', url: '/${moduleName}/${className}/list',
method: 'get', method: 'post',
params: query data: query,
params: pageReq
}) })
} }
// 查询${functionName}详细 // 查询${functionName}详细
export function get${BusinessName}(${pkColumn.javaField}) { export function get${BusinessName}(${pkColumn.javaField}) {
return request({ return request({
url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, url: '/${moduleName}/${className}/' + ${pkColumn.javaField},
method: 'get' method: 'get'
}) })
} }
@ -20,7 +21,7 @@ export function get${BusinessName}(${pkColumn.javaField}) {
// 新增${functionName} // 新增${functionName}
export function add${BusinessName}(data) { export function add${BusinessName}(data) {
return request({ return request({
url: '/${moduleName}/${businessName}', url: '/${moduleName}/${className}',
method: 'post', method: 'post',
data: data data: data
}) })
@ -29,7 +30,7 @@ export function add${BusinessName}(data) {
// 修改${functionName} // 修改${functionName}
export function update${BusinessName}(data) { export function update${BusinessName}(data) {
return request({ return request({
url: '/${moduleName}/${businessName}', url: '/${moduleName}/${className}',
method: 'put', method: 'put',
data: data data: data
}) })
@ -38,7 +39,7 @@ export function update${BusinessName}(data) {
// 删除${functionName} // 删除${functionName}
export function del${BusinessName}(${pkColumn.javaField}) { export function del${BusinessName}(${pkColumn.javaField}) {
return request({ return request({
url: '/${moduleName}/${businessName}/' + ${pkColumn.javaField}, url: '/${moduleName}/${className}/' + ${pkColumn.javaField},
method: 'delete' method: 'delete'
}) })
} }
@ -46,7 +47,7 @@ export function del${BusinessName}(${pkColumn.javaField}) {
// 导出${functionName} // 导出${functionName}
export function export${BusinessName}(query) { export function export${BusinessName}(query) {
return request({ return request({
url: '/${moduleName}/${businessName}/export', url: '/${moduleName}/${className}/export',
method: 'get', method: 'get',
params: query params: query
}) })

@ -1,22 +1,22 @@
-- 菜单 SQL -- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}', '${parentMenuId}', '1', '${businessName}', '${moduleName}/${businessName}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 1, sysdate(), '', null, '${functionName}菜单'); values('${functionName}', '${parentMenuId}', '1', '${className}', '${moduleName}/${className}/index', 1, 0, 'C', '0', '0', '${permissionPrefix}:list', '#', 1, sysdate(), 1, null, '${functionName}菜单');
-- 按钮父菜单ID -- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID(); SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL -- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 1, sysdate(), '', null, ''); values('${functionName}查询', @parentId, '1', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:query', '#', 1, sysdate(), 1, null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 1, sysdate(), '', null, ''); values('${functionName}新增', @parentId, '2', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:add', '#', 1, sysdate(), 1, null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 1, sysdate(), '', null, ''); values('${functionName}修改', @parentId, '3', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:edit', '#', 1, sysdate(), 1, null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 1, sysdate(), '', null, ''); values('${functionName}删除', @parentId, '4', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:remove', '#', 1, sysdate(), 1, null, '');
insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark) insert into sys_menu (menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 1, sysdate(), '', null, ''); values('${functionName}导出', @parentId, '5', '#', '', 1, 0, 'F', '0', '0', '${permissionPrefix}:export', '#', 1, sysdate(), 1, null, '');

@ -18,7 +18,7 @@
#if($column.htmlType == "input") #if($column.htmlType == "input")
<el-form-item label="${comment}" prop="${column.javaField}"> <el-form-item label="${comment}" prop="${column.javaField}">
<el-input <el-input
v-model="queryParams.${column.javaField}" v-model.trim="queryParams.${column.javaField}"
placeholder="请输入${comment}" placeholder="请输入${comment}"
clearable clearable
size="small" size="small"
@ -41,7 +41,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
#elseif($column.htmlType == "datetime" || $column.htmlType == "date") #elseif($column.htmlType == "datetime" || $column.htmlType == "date")
#set($valueFormat = 'yyyy-MM-dd HH:mm:ss') #set($valueFormat = 'yyyy-MM-ddTHH:mm:ss')
#if($column.htmlType == "date") #if($column.htmlType == "date")
#set($valueFormat = 'yyyy-MM-dd') #set($valueFormat = 'yyyy-MM-dd')
#end #end
@ -143,7 +143,7 @@
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange"> <WmsTable v-loading="loading" :data="${businessName}List" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
#set($count0 = 0) #set($count0 = 0)
#foreach($column in $columns) #foreach($column in $columns)
@ -155,7 +155,7 @@
#set($comment=$column.columnComment) #set($comment=$column.columnComment)
#end #end
#if($column.pk) #if($column.pk)
<el-table-column label="${comment}" align="center" prop="${javaField}" /> ## id字段不展示
#elseif($column.list) #elseif($column.list)
#if($column.htmlType == "datetime" || $column.htmlType == "date" || $column.htmlType == "time") #if($column.htmlType == "datetime" || $column.htmlType == "date" || $column.htmlType == "time")
#set($valueFormat = '') #set($valueFormat = '')
@ -199,7 +199,7 @@
>删除</el-button> >删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </WmsTable>
<pagination <pagination
v-show="total>0" v-show="total>0"
@ -214,7 +214,7 @@
<el-form ref="form" :model="form" :rules="rules" label-width="108px" inline class="dialog-form-two"> <el-form ref="form" :model="form" :rules="rules" label-width="108px" inline class="dialog-form-two">
#foreach($column in $columns) #foreach($column in $columns)
#set($field=$column.javaField) #set($field=$column.javaField)
#if($column.insert && !$column.pk) #if($column.insert && !$column.pk && $field!="delFlag")
#if(($column.usableColumn) || (!$column.superColumn)) #if(($column.usableColumn) || (!$column.superColumn))
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
@ -225,7 +225,7 @@
#set($dictType=$column.dictType) #set($dictType=$column.dictType)
#if($column.htmlType == "input") #if($column.htmlType == "input")
<el-form-item label="${comment}" prop="${field}"> <el-form-item label="${comment}" prop="${field}">
<el-input v-model="form.${field}" placeholder="请输入${comment}" /> <el-input v-model.trim="form.${field}" placeholder="请输入${comment}" />
</el-form-item> </el-form-item>
#elseif($column.htmlType == "imageUpload") #elseif($column.htmlType == "imageUpload")
<el-form-item label="${comment}"> <el-form-item label="${comment}">
@ -290,7 +290,7 @@
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
#elseif($column.htmlType == "datetime" || $column.htmlType == "date" || $column.htmlType == "time") #elseif($column.htmlType == "datetime" || $column.htmlType == "date" || $column.htmlType == "time")
#set($valueFormat = 'yyyy-MM-dd HH:mm:ss') #set($valueFormat = 'yyyy-MM-ddTHH:mm:ss')
#if($column.htmlType == "date") #if($column.htmlType == "date")
#set($valueFormat = 'yyyy-MM-dd') #set($valueFormat = 'yyyy-MM-dd')
#elseif($column.htmlType == "time") #elseif($column.htmlType == "time")
@ -322,7 +322,7 @@
<el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete${subClassName}">删除</el-button> <el-button type="danger" icon="el-icon-delete" size="mini" @click="handleDelete${subClassName}">删除</el-button>
</el-col> </el-col>
</el-row> </el-row>
<el-table :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}"> <WmsTable :data="${subclassName}List" :row-class-name="row${subClassName}Index" @selection-change="handle${subClassName}SelectionChange" ref="${subclassName}">
<el-table-column type="selection" width="50" align="center" /> <el-table-column type="selection" width="50" align="center" />
<el-table-column label="序号" align="center" prop="index" width="50"/> <el-table-column label="序号" align="center" prop="index" width="50"/>
#foreach($column in $subTable.columns) #foreach($column in $subTable.columns)
@ -337,12 +337,12 @@
#elseif($column.list && "" != $javaField) #elseif($column.list && "" != $javaField)
<el-table-column label="$comment" prop="${javaField}"> <el-table-column label="$comment" prop="${javaField}">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input v-model="scope.row.$javaField" placeholder="请输入$comment" /> <el-input v-model.trim="scope.row.$javaField" placeholder="请输入$comment" />
</template> </template>
</el-table-column> </el-table-column>
#end #end
#end #end
</el-table> </WmsTable>
#end #end
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
@ -354,7 +354,7 @@
</template> </template>
<script> <script>
import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${businessName}"; import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${className}";
export default { export default {
name: "${BusinessName}", name: "${BusinessName}",
@ -414,7 +414,7 @@ export default {
// 表单校验 // 表单校验
rules: { rules: {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.required) #if($column.required && $column.javaField!="delFlag")
#set($parentheseIndex=$column.columnComment.indexOf("")) #set($parentheseIndex=$column.columnComment.indexOf(""))
#if($parentheseIndex != -1) #if($parentheseIndex != -1)
#set($comment=$column.columnComment.substring(0, $parentheseIndex)) #set($comment=$column.columnComment.substring(0, $parentheseIndex))
@ -464,9 +464,13 @@ export default {
} }
#end #end
#end #end
list${BusinessName}(this.queryParams).then(response => { const {pageNum, pageSize} = this.queryParams;
this.${businessName}List = response.rows; const query = {...this.queryParams, pageNum: undefined, pageSize: undefined};
this.total = response.total; const pageReq = {page: pageNum - 1, size: pageSize};
list${BusinessName}(query, pageReq).then(response => {
const { content, totalElements } = response
this.${businessName}List = content;
this.total = totalElements;
this.loading = false; this.loading = false;
}); });
}, },
@ -479,6 +483,7 @@ export default {
reset() { reset() {
this.form = { this.form = {
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.javaField != "delFlag")
#if($column.htmlType == "radio") #if($column.htmlType == "radio")
$column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($velocityCount != $columns.size()),#end $column.javaField: #if($column.javaType == "Integer" || $column.javaType == "Long")0#else"0"#end#if($velocityCount != $columns.size()),#end
@ -488,6 +493,7 @@ export default {
#else #else
$column.javaField: null#if($velocityCount != $columns.size()),#end $column.javaField: null#if($velocityCount != $columns.size()),#end
#end
#end #end
#end #end
}; };
@ -529,7 +535,7 @@ export default {
this.reset(); this.reset();
const ${pkColumn.javaField} = row.${pkColumn.javaField} || this.ids const ${pkColumn.javaField} = row.${pkColumn.javaField} || this.ids
get${BusinessName}(${pkColumn.javaField}).then(response => { get${BusinessName}(${pkColumn.javaField}).then(response => {
this.form = response.data; this.form = response;
#foreach ($column in $columns) #foreach ($column in $columns)
#if($column.htmlType == "checkbox") #if($column.htmlType == "checkbox")
this.form.$column.javaField = this.form.${column.javaField}.split(","); this.form.$column.javaField = this.form.${column.javaField}.split(",");
@ -620,7 +626,7 @@ export default {
this.exportLoading = true; this.exportLoading = true;
return export${BusinessName}(queryParams); return export${BusinessName}(queryParams);
}).then(response => { }).then(response => {
this.download(response.msg); this.$download.download(response);
this.exportLoading = false; this.exportLoading = false;
}).catch(() => {}); }).catch(() => {});
} }

@ -15,30 +15,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateTime" column="update_time" /> <result property="updateTime" column="update_time" />
#end #end
</resultMap> </resultMap>
#if($table.sub)
<resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result">
<collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
</resultMap>
<resultMap type="${subClassName}" id="${subClassName}Result">
#foreach ($column in $subTable.columns)
<result property="${column.javaField}" column="sub_${column.columnName}" />
#end
#if(${subTable.audit} == 1)
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time" />
#end
</resultMap>
#end
<sql id="select${ClassName}Vo"> <sql id="select${ClassName}Vo">
select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end #if(${table.audit} == 1), create_by, create_time, update_by, update_time#end from ${tableName} select#foreach($column in $columns) $column.columnName#if($velocityCount != $columns.size()),#end#end #if(${table.audit} == 1) #end from ${tableName}
</sql> </sql>
<select id="selectList" parameterType="${ClassName}" resultMap="${ClassName}Result"> <select id="selectByEntity" parameterType="${ClassName}" resultMap="${ClassName}Result">
<include refid="select${ClassName}Vo"/> <include refid="select${ClassName}Vo"/>
<where> <where>
#foreach($column in $columns) #foreach($column in $columns)
@ -70,131 +52,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
</select> </select>
<select id="selectBy${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${subClassName}Result#else${ClassName}Result#end"> <update id="updateDelFlagByIds">
#if($table.crud || $table.tree) update ${tableName} set del_flag=1
<include refid="select${ClassName}Vo"/> <where>
where ${pkColumn.columnName} = #{${pkColumn.javaField}} id in <foreach collection="ids" open="(" item="it" close=")" separator=",">#{it}</foreach>
#elseif($table.sub) </where>
select#foreach($column in $columns) a.$column.columnName#if($velocityCount != $columns.size()),#end#end,
#foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($velocityCount != $subTable.columns.size()),#end#end
from ${tableName} a
left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
#end
</select>
<insert id="insert" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
#end
#if(${table.audit} == 1)
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
#end
#if(${table.audit} == 1)
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
#end
</trim>
</insert>
<update id="update" parameterType="${ClassName}">
update ${tableName}
<trim prefix="SET" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
#end
#end
#if(${table.audit} == 1)
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
#end
</trim>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</update> </update>
<delete id="deleteBy${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}">
delete from ${tableName} where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</delete>
<delete id="deleteBy${pkColumn.capJavaField}s" parameterType="String">
delete from ${tableName} where ${pkColumn.columnName} in
<foreach item="${pkColumn.javaField}" collection="array" open="(" separator="," close=")">
#{${pkColumn.javaField}}
</foreach>
</delete>
<insert id="insertOrUpdate" parameterType="${ClassName}" useGeneratedKeys="true" keyProperty="id">
insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="$pkColumn.javaField != null">
$pkColumn.columnName,
</if>
#foreach($column in $columns)#if($column.javaField != $pkColumn.javaField) ${column.columnName},#end#end
#if(${table.audit} == 1)create_by, create_time, update_by, update_time#end
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="$pkColumn.javaField != null">
#{$pkColumn.javaField, jdbcType=$pkColumn.CapColumnType},
</if>
#foreach($column in $columns)#if($column.javaField != $pkColumn.javaField)#{${column.javaField}, jdbcType=$column.CapColumnType},#end#end
#if(${table.audit} == 1)#{createBy}, #{createTime}, #{updateBy}, #{updateTime}#end
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="$pkColumn.javaField != null">
${pkColumn.javaField} = #{${pkColumn.javaField},jdbcType=${pkColumn.CapColumnType}},
</if>
#foreach($column in $columns)
#if($column.javaField != $pkColumn.javaField)
${column.columnName} = #{${column.javaField}, jdbcType=$column.CapColumnType},
#end
#end
#if(${table.audit} == 1)
create_by = #{createBy},
create_time = #{createTime},
update_by = #{updateBy},
update_time = #{updateTime},
#end
</trim>
</insert>
#if($table.sub)
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
delete from ${subTableName} where ${subTableFkName} in
<foreach item="${subTableFkclassName}" collection="array" open="(" separator="," close=")">
#{${subTableFkclassName}}
</foreach>
</delete>
<delete id="delete${subClassName}By${subTableFkClassName}" parameterType="${pkColumn.javaType}">
delete from ${subTableName} where ${subTableFkName} = #{${subTableFkclassName}}
</delete>
<insert id="batch${subClassName}">
insert into ${subTableName}(#foreach($column in $subTable.columns) $column.columnName#if($velocityCount != $subTable.columns.size()),#end#end #if(${table.audit} == 1), create_by, create_time, update_by, update_time#end) values
<foreach item="item" index="index" collection="list" separator=",">
(#foreach($column in $subTable.columns)#{item.$column.javaField}#if($velocityCount != $subTable.columns.size()), #end#end #if(${table.audit} == 1), #{createBy}, #{createTime}, #{updateBy}, #{updateTime}#end)
</foreach>
</insert>
#end
</mapper> </mapper>

Loading…
Cancel
Save