From 8a2c7f257f75eb6d30dee3e706b3e1e72a79e1f1 Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Thu, 27 Nov 2025 13:50:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(generator):=20=E5=A2=9E=E5=BC=BA=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8=E6=94=AF=E6=8C=81=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E6=9F=A5=E8=AF=A2=E5=92=8C=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在Controller模板中新增支持下拉框查询列表接口 - 在Mapper接口模板中新增多种自定义查询和批量插入更新删除方法 - 在Mapper XML模板中添加对应的SQL映射,自定义条件查询及批量操作 - 修改ServiceImpl模板,改用自定义Mapper方法完成查询操作支持分页和列表查询 - 提升代码生成器生成代码的灵活度和扩展性,便于业务定制查询和批量数据处理 --- .../main/resources/vm/java/controller.java.vm | 11 ++ .../src/main/resources/vm/java/mapper.java.vm | 97 +++++++++++++ .../resources/vm/java/serviceImpl.java.vm | 8 +- .../src/main/resources/vm/xml/mapper.xml.vm | 136 ++++++++++++++++++ 4 files changed, 249 insertions(+), 3 deletions(-) diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/controller.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/controller.java.vm index 6438971..eb26311 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/controller.java.vm +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/controller.java.vm @@ -112,4 +112,15 @@ public class ${ClassName}Controller extends BaseController { @PathVariable ${pkColumn.javaType}[] ${pkColumn.javaField}s) { return toAjax(${className}Service.deleteWithValidByIds(List.of(${pkColumn.javaField}s), true)); } + + /** + * 下拉框查询${functionName}列表 + */ + @SaCheckPermission("${permissionPrefix}:list") + @GetMapping("/get${ClassName}List") + public R> get${ClassName}List(${ClassName}Bo bo) { + List<${ClassName}Vo> list = ${className}Service.queryList(bo); + return R.ok(list); + } + } diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm index 0922401..701b274 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/mapper.java.vm @@ -3,6 +3,12 @@ package ${packageName}.mapper; import ${packageName}.domain.${ClassName}; import ${packageName}.domain.vo.${ClassName}Vo; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; +import java.util.List; +import java.util.Collection; /** * ${functionName}Mapper接口 @@ -12,4 +18,95 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; */ public interface ${ClassName}Mapper extends BaseMapperPlus<${ClassName}, ${ClassName}Vo> { + /** + * 查询${functionName}列表(自定义条件) + * + * @param queryWrapper 条件 + * @return ${functionName}集合 + */ + List<${ClassName}Vo> selectCustom${ClassName}VoList(@Param(Constants.WRAPPER) Wrapper<${ClassName}> queryWrapper); + + /** + * 根据ID查询${functionName}详情 + * + * @param ${pkColumn.javaField} 主键ID + * @return ${functionName}对象 + */ + ${ClassName}Vo selectCustom${ClassName}VoById(@Param("${pkColumn.javaField}") ${pkColumn.javaType} ${pkColumn.javaField}); + + /** + * 根据ID列表批量查询${functionName} + * + * @param ids ID集合 + * @return ${functionName}集合 + */ + List<${ClassName}Vo> selectCustom${ClassName}VoByIds(@Param("ids") Collection<${pkColumn.javaType}> ids); + + /** + * 统计${functionName}记录数 + * + * @param queryWrapper 查询条件 + * @return 记录总数 + */ + Long countCustom${ClassName}(@Param(Constants.WRAPPER) Wrapper<${ClassName}> queryWrapper); + + /** + * 分页查询${functionName}(自定义条件) + * + * @param page 分页对象 + * @param queryWrapper 查询条件 + * @return 分页结果 + */ + Page<${ClassName}Vo> selectCustom${ClassName}VoPage(@Param("page") Page<${ClassName}> page, @Param(Constants.WRAPPER) Wrapper<${ClassName}> queryWrapper); + + /** + * 批量插入${functionName} + * + * @param list ${functionName}对象集合 + * @return 影响行数 + */ + int batchInsert${ClassName}(@Param("list") List<${ClassName}> list); + + /** + * 批量更新${functionName} + * + * @param list ${functionName}对象集合 + * @return 影响行数 + */ + int batchUpdate${ClassName}(@Param("list") List<${ClassName}> list); + + /** + * 根据自定义条件删除${functionName} + * + * @param queryWrapper 删除条件 + * @return 影响行数 + */ + int deleteCustom${ClassName}(@Param(Constants.WRAPPER) Wrapper<${ClassName}> queryWrapper); + + /** + * 根据ID列表批量删除${functionName} + * + * @param ids ID集合 + * @return 影响行数 + */ + int deleteCustom${ClassName}ByIds(@Param("ids") Collection<${pkColumn.javaType}> ids); + + /** + * 检查${functionName}是否存在 + * + * @param queryWrapper 查询条件 + * @return 是否存在 + */ + Boolean exists${ClassName}(@Param(Constants.WRAPPER) Wrapper<${ClassName}> queryWrapper); + +#if($table.sub) + /** + * 批量插入${subTable.functionName} + * + * @param list ${subTable.functionName}对象集合 + * @return 影响行数 + */ + int batch${subClassName}(@Param("list") List<${subClassName}> list); +#end + } diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm index be6c3bf..c8a11d1 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/java/serviceImpl.java.vm @@ -43,7 +43,7 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { */ @Override public ${ClassName}Vo queryById(${pkColumn.javaType} ${pkColumn.javaField}){ - return baseMapper.selectVoById(${pkColumn.javaField}); + return baseMapper.selectCustom${ClassName}VoById(${pkColumn.javaField}); } #if($table.crud) @@ -57,7 +57,8 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { @Override public TableDataInfo<${ClassName}Vo> queryPageList(${ClassName}Bo bo, PageQuery pageQuery) { LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); - Page<${ClassName}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); + // 使用自定义 Mapper XML + MyBatis-Plus Wrapper 进行分页查询 + Page<${ClassName}Vo> result = baseMapper.selectCustom${ClassName}VoPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } #end @@ -71,7 +72,8 @@ public class ${ClassName}ServiceImpl implements I${ClassName}Service { @Override public List<${ClassName}Vo> queryList(${ClassName}Bo bo) { LambdaQueryWrapper<${ClassName}> lqw = buildQueryWrapper(bo); - return baseMapper.selectVoList(lqw); + // 使用自定义 Mapper XML + MyBatis-Plus Wrapper 查询列表 + return baseMapper.selectCustom${ClassName}VoList(lqw); } private LambdaQueryWrapper<${ClassName}> buildQueryWrapper(${ClassName}Bo bo) { diff --git a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm index 1c76ad8..b08e298 100644 --- a/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm +++ b/ruoyi-modules/ruoyi-generator/src/main/resources/vm/xml/mapper.xml.vm @@ -3,4 +3,140 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> + + + + + + + + + + + + + + + + + + + + + insert into ${tableName}( +#foreach($column in $columns) +#if(!$column.increment) + $column.columnName#if($foreach.count != $columns.size()),#end + +#end +#end + ) + values + + ( +#foreach($column in $columns) +#if(!$column.increment) + #{item.$column.javaField}#if($foreach.count != $columns.size()),#end + +#end +#end + ) + + + + + + + update ${tableName} + +#foreach($column in $columns) +#if(!$column.pk && !$column.increment) + + $column.columnName = #{item.$column.javaField}#if($foreach.count != $columns.size()),#end + +#end +#end + + where ${pkColumn.columnName} = #{item.${pkColumn.javaField}} + + + + + + delete from ${tableName} + + ${ew.customSqlSegment} + + + + + + delete from ${tableName} + where ${pkColumn.columnName} in + + #{id} + + + + + + +#if($table.sub) + + + insert into ${subTableName}( +#foreach($column in $subTable.columns) +#if(!$column.increment) + $column.columnName#if($foreach.count != $subTable.columns.size()),#end + +#end +#end + ) + values + + ( +#foreach($column in $subTable.columns) +#if(!$column.increment) + #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end + +#end +#end + ) + + +#end +