mirror of
https://github.com/moshowgame/SpringBootCodeGenerator.git
synced 2025-12-26 05:48:33 +08:00
| 2025.12.09 | 优化Mybatis-Plus模板
This commit is contained in:
parent
6cb2af2c7a
commit
2a354f7aba
@ -244,6 +244,7 @@ ResultVo.error(message);
|
|||||||
# Update Logs
|
# Update Logs
|
||||||
| 更新日期 | 更新内容 |
|
| 更新日期 | 更新内容 |
|
||||||
|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
|:-----------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| 2025.12.09 | 优化Mybatis和Mybatis-Plus模板 |
|
||||||
| 2025.12.08 | 引入单元测试和JaCoCo测试覆盖率,优化代码覆盖率 [UNIT_TEST_DOCUMENT.md](UNIT_TEST_DOCUMENT.md) |
|
| 2025.12.08 | 引入单元测试和JaCoCo测试覆盖率,优化代码覆盖率 [UNIT_TEST_DOCUMENT.md](UNIT_TEST_DOCUMENT.md) |
|
||||||
| 2025.12.07 | 后端重构优化 ;目录结构调整! |
|
| 2025.12.07 | 后端重构优化 ;目录结构调整! |
|
||||||
| 2025.09.14 | 优化JSqlParser Engine(DDL Create SQL和Select SQL),适配更高级复杂的SQL |
|
| 2025.09.14 | 优化JSqlParser Engine(DDL Create SQL和Select SQL),适配更高级复杂的SQL |
|
||||||
|
|||||||
@ -43,11 +43,11 @@ public class ${classInfo.className}Controller {
|
|||||||
if(old${classInfo.className}!=null){
|
if(old${classInfo.className}!=null){
|
||||||
${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first});
|
${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first});
|
||||||
}else{
|
}else{
|
||||||
if(${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_name",${classInfo.className?uncap_first}.get${classInfo.className}Name()))!=null){
|
if(${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_name",${classInfo.className?uncap_first}.get${classInfo.className}Name()))!=null){
|
||||||
return ${returnUtilFailure}("保存失败,名字重复");
|
return ${returnUtilFailure}("保存失败,名字重复");
|
||||||
}
|
}
|
||||||
${classInfo.className?uncap_first}.setCreateTime(new Date());
|
${classInfo.className?uncap_first}.setCreateTime(new Date());
|
||||||
${classInfo.className?uncap_first}Mapper.insert(${classInfo.className?uncap_first});
|
${classInfo.className?uncap_first}Mapper.insert(${classInfo.className?uncap_first});
|
||||||
}
|
}
|
||||||
return ${returnUtilSuccess}("保存成功");
|
return ${returnUtilSuccess}("保存成功");
|
||||||
}
|
}
|
||||||
@ -83,43 +83,51 @@ public class ${classInfo.className}Controller {
|
|||||||
* 自动分页查询
|
* 自动分页查询
|
||||||
*/
|
*/
|
||||||
@PostMapping("/list")
|
@PostMapping("/list")
|
||||||
public Object list(String searchParams,
|
public Object list(@RequestBody ${classInfo.className} ${classInfo.className?uncap_first},@RequestParam(required = false, defaultValue = "0") int page,@RequestParam(required = false, defaultValue = "10") int limit) {
|
||||||
@RequestParam(required = false, defaultValue = "0") int page,
|
|
||||||
@RequestParam(required = false, defaultValue = "10") int limit) {
|
|
||||||
log.info("page:"+page+"-limit:"+limit+"-json:"+ JSON.toJSONString(searchParams));
|
log.info("page:"+page+"-limit:"+limit+"-json:"+ JSON.toJSONString(searchParams));
|
||||||
//分页构造器
|
//分页构造器
|
||||||
Page<${classInfo.className}> buildPage = new Page<${classInfo.className}>(page,limit);
|
Page<${classInfo.className}> buildPage = new Page<${classInfo.className}>(page,limit);
|
||||||
//条件构造器
|
//条件构造器
|
||||||
QueryWrapper<${classInfo.className}> queryWrapper = new QueryWrapper<${classInfo.className}>();
|
QueryWrapper<${classInfo.className}> queryWrapper = new QueryWrapper<${classInfo.className}>();
|
||||||
if(StringUtils.isNotEmpty(searchParams)&&JSON.isValid(searchParams)) {
|
if(JSON.stringify(${classInfo.className?uncap_first}).length()>2) {
|
||||||
${classInfo.className} ${classInfo.className?uncap_first} = JSON.parseObject(searchParams, ${classInfo.className}.class);
|
//自行删除不需要动态查询字段
|
||||||
queryWrapper.eq(StringUtils.isNoneEmpty(${classInfo.className?uncap_first}.get${classInfo.className}Name()), "${classInfo.className?uncap_first}_name", ${classInfo.className?uncap_first}.get${classInfo.className}Name());
|
queryWrapper.
|
||||||
|
<#list classInfo.fieldList as fieldItem>
|
||||||
|
eq(StringUtils.isNoneEmpty(${classInfo.className?uncap_first}.get${fieldItem.fieldName}()), "${fieldItem.fieldName}", ${classInfo.className?uncap_first}.get${fieldItem.fieldName}())
|
||||||
|
</#list>
|
||||||
|
;
|
||||||
}
|
}
|
||||||
//执行分页
|
//执行分页
|
||||||
IPage<${classInfo.className}> pageList = ${classInfo.className?uncap_first}Mapper.selectPage(buildPage, queryWrapper);
|
IPage<${classInfo.className}> pageList = ${classInfo.className?uncap_first}Mapper.selectPage(buildPage, queryWrapper);
|
||||||
//返回结果
|
//返回结果
|
||||||
return ${returnUtil}.PAGE(pageList.getRecords(),pageList.getTotal());
|
return ${returnUtil}.PAGE(pageList.getRecords(),pageList.getTotal());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 手工分页查询(按需使用)
|
* 动态条件手工分页查询
|
||||||
|
* 根据对象属性自动构建条件,如果字段有值则进行分页+指定条件查询,否则仅进行分页查询
|
||||||
*/
|
*/
|
||||||
/*@PostMapping("/list2")
|
@PostMapping("/list")
|
||||||
public Object list2(String searchParams,
|
public Object list(String searchParams, @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "10") int limit) {
|
||||||
@RequestParam(required = false, defaultValue = "0") int page,
|
log.info("page:"+page+"-limit:"+limit+"-json:"+ JSON.toJSONString(searchParams));
|
||||||
@RequestParam(required = false, defaultValue = "10") int limit) {
|
|
||||||
log.info("searchParams:"+ JSON.toJSONString(searchParams));
|
// 分页参数处理
|
||||||
//通用模式
|
int offset = (page - 1) * limit;
|
||||||
${classInfo.className} queryParamDTO = JSON.parseObject(searchParams, ${classInfo.className}.class);
|
|
||||||
//专用DTO模式
|
// 查询参数处理
|
||||||
//QueryParamDTO queryParamDTO = JSON.parseObject(searchParams, QueryParamDTO.class);
|
${classInfo.className} queryParamDTO = new ${classInfo.className}();
|
||||||
//queryParamDTO.setPage((page - 1)* limit);
|
if(StringUtils.isNotEmpty(searchParams) && JSON.isValid(searchParams)) {
|
||||||
//queryParamDTO.setLimit(limit);
|
queryParamDTO = JSON.parseObject(searchParams, ${classInfo.className}.class);
|
||||||
//(page - 1) * limit, limit
|
}
|
||||||
List<${classInfo.className}> itemList = ${classInfo.className?uncap_first}Mapper.pageAll(queryParamDTO,(page - 1)* limit,limit);
|
|
||||||
Integer itemCount = ${classInfo.className?uncap_first}Mapper.countAll(queryParamDTO);
|
// 使用动态条件查询
|
||||||
|
List<${classInfo.className}> itemList = ${classInfo.className?uncap_first}Mapper.selectPageByCondition(queryParamDTO, offset, limit);
|
||||||
|
int itemCount = ${classInfo.className?uncap_first}Mapper.selectPageByConditionCount(queryParamDTO);
|
||||||
|
|
||||||
//返回结果
|
//返回结果
|
||||||
return ${returnUtilSuccess}.PAGE(itemList,itemCount);
|
return ${returnUtil}.PAGE(itemList, itemCount);
|
||||||
}*/
|
}
|
||||||
|
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public ModelAndView listPage(){
|
public ModelAndView listPage(){
|
||||||
return new ModelAndView("${classInfo.className?uncap_first}-list");
|
return new ModelAndView("${classInfo.className?uncap_first}-list");
|
||||||
@ -132,16 +140,16 @@ public class ${classInfo.className}Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 发布/暂停(如不需要请屏蔽)
|
* 激活/停用(如不需要请屏蔽)
|
||||||
*/
|
*/
|
||||||
@PostMapping("/publish")
|
@PostMapping("/active")
|
||||||
public Object publish(int id,Integer status){
|
public Object active(int id,Integer status){
|
||||||
${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_id",id));
|
${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_id",id));
|
||||||
if(${classInfo.className?uncap_first}!=null){
|
if(${classInfo.className?uncap_first}!=null){
|
||||||
${classInfo.className?uncap_first}.setUpdateTime(new Date());
|
${classInfo.className?uncap_first}.setUpdateTime(new Date());
|
||||||
${classInfo.className?uncap_first}.setStatus(status);
|
${classInfo.className?uncap_first}.setStatus(status);
|
||||||
${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first});
|
${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first});
|
||||||
return ${returnUtilSuccess}((status==1)?"已发布":"已暂停");
|
return ${returnUtilSuccess}((status==1)?"已激活":"已停用");
|
||||||
}else if(status.equals(${classInfo.className?uncap_first}.getStatus())){
|
}else if(status.equals(${classInfo.className?uncap_first}.getStatus())){
|
||||||
return ${returnUtilFailure}("状态不正确");
|
return ${returnUtilFailure}("状态不正确");
|
||||||
}else{
|
}else{
|
||||||
@ -150,13 +158,13 @@ public class ${classInfo.className}Controller {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 执行(如不需要请屏蔽)
|
* 测试(如不需要请屏蔽)
|
||||||
*/
|
*/
|
||||||
@PostMapping("/execute")
|
@GetMapping("/test")
|
||||||
public Object execute(){
|
public Object test(){
|
||||||
return ${returnUtilSuccess};
|
return ${returnUtilSuccess};
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import io.swagger.v3.oas.annotations.media.Schema;</#if>
|
|||||||
* @date ${.now?string('yyyy-MM-dd')}
|
* @date ${.now?string('yyyy-MM-dd')}
|
||||||
*/
|
*/
|
||||||
<#if isLombok?exists && isLombok==true>@Data</#if><#if isSwagger?exists && isSwagger==true>
|
<#if isLombok?exists && isLombok==true>@Data</#if><#if isSwagger?exists && isSwagger==true>
|
||||||
@Schema"${classInfo.classComment}")</#if>
|
@Schema(description = "${classInfo.classComment}")</#if>
|
||||||
public class ${classInfo.className} implements Serializable {
|
public class ${classInfo.className} implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
<#if isAutoImport?exists && isAutoImport==true>
|
<#if isAutoImport?exists && isAutoImport==true>
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
import org.apache.ibatis.annotations.Select;
|
import org.apache.ibatis.annotations.Select;
|
||||||
import ${packageName}.entity.${classInfo.className};
|
import ${packageName}.entity.${classInfo.className};
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -14,25 +15,55 @@ import java.util.List;
|
|||||||
@Mapper
|
@Mapper
|
||||||
public interface ${classInfo.className}Mapper extends BaseMapper<${classInfo.className}> {
|
public interface ${classInfo.className}Mapper extends BaseMapper<${classInfo.className}> {
|
||||||
|
|
||||||
@Select(
|
/**
|
||||||
"<script>select t0.* from ${classInfo.tableName} t0 " +
|
* 动态条件分页查询 - 根据对象属性自动构建条件
|
||||||
//add here if need left join
|
* 如果字段有值则进行分页+指定条件查询,否则仅进行分页查询
|
||||||
"where 1=1" +
|
*/
|
||||||
<#list classInfo.fieldList as fieldItem >
|
@Select("""
|
||||||
"<when test='${fieldItem.fieldName}!=null and ${fieldItem.fieldName}!='' '> and t0.${fieldItem.columnName}=井{${fieldItem.fieldName}}</when> " +
|
<script>
|
||||||
</#list>
|
SELECT * FROM ${classInfo.tableName}
|
||||||
//add here if need page limit
|
<where>
|
||||||
//" limit ¥{page},¥{limit} " +
|
<#list classInfo.fieldList as fieldItem>
|
||||||
" </script>")
|
<#if fieldItem.fieldClass?contains("String")>
|
||||||
List<${classInfo.className}> pageAll(${classInfo.className} queryParamDTO,int page,int limit);
|
<if test='queryParamDTO.${fieldItem.fieldName} != null and queryParamDTO.${fieldItem.fieldName} != ""'>
|
||||||
|
AND ${fieldItem.columnName} = 井{queryParamDTO.${fieldItem.fieldName}}
|
||||||
|
</if>
|
||||||
|
<#else>
|
||||||
|
<if test='queryParamDTO.${fieldItem.fieldName} != null'>
|
||||||
|
AND ${fieldItem.columnName} = 井{queryParamDTO.${fieldItem.fieldName}}
|
||||||
|
</if>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</where>
|
||||||
|
ORDER BY id DESC
|
||||||
|
LIMIT 井{offset}, 井{limit}
|
||||||
|
</script>
|
||||||
|
""")
|
||||||
|
List<${classInfo.className}> selectPageByCondition(@Param("queryParamDTO") ${classInfo.className} queryParamDTO,
|
||||||
|
@Param("offset") int offset,
|
||||||
|
@Param("limit") int limit);
|
||||||
|
|
||||||
@Select("<script>select count(1) from ${classInfo.tableName} t0 " +
|
/**
|
||||||
//add here if need left join
|
* 动态条件分页查询总数
|
||||||
"where 1=1" +
|
*/
|
||||||
<#list classInfo.fieldList as fieldItem >
|
@Select("""
|
||||||
"<when test='${fieldItem.fieldName}!=null and ${fieldItem.fieldName}!='' '> and t0.${fieldItem.columnName}=井{${fieldItem.fieldName}}</when> " +
|
<script>
|
||||||
</#list>
|
SELECT COUNT(*) FROM ${classInfo.tableName}
|
||||||
" </script>")
|
<where>
|
||||||
int countAll(${classInfo.className} queryParamDTO);
|
<#list classInfo.fieldList as fieldItem>
|
||||||
|
<#if fieldItem.fieldClass?contains("String")>
|
||||||
|
<if test='queryParamDTO.${fieldItem.fieldName} != null and queryParamDTO.${fieldItem.fieldName} != ""'>
|
||||||
|
AND ${fieldItem.columnName} = 井{queryParamDTO.${fieldItem.fieldName}}
|
||||||
|
</if>
|
||||||
|
<#else>
|
||||||
|
<if test='queryParamDTO.${fieldItem.fieldName} != null'>
|
||||||
|
AND ${fieldItem.columnName} = 井{queryParamDTO.${fieldItem.fieldName}}
|
||||||
|
</if>
|
||||||
|
</#if>
|
||||||
|
</#list>
|
||||||
|
</where>
|
||||||
|
</script>
|
||||||
|
""")
|
||||||
|
int selectPageByConditionCount(@Param("queryParamDTO") ${classInfo.className} queryParamDTO);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user