6.9 KiB
6.9 KiB
Spring Boot + MyBatis-Plus 业务模块生成提示词
当需要创建新的业务模块时,按照以下模板生成代码:
实体类模板 (Domain)
package com.ruoyi.{module}.domain;
import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* {业务名称}对象 {表名}
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("{表名}")
public class {实体类名} extends BaseEntity {
/** 主键ID */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 字段说明 */
private String fieldName;
// ... 其他字段
}
Mapper 接口模板
package com.ruoyi.{module}.mapper;
import com.ruoyi.common.core.mapper.BaseMapperPlus;
import com.ruoyi.{module}.domain.{实体类名};
import com.ruoyi.{module}.domain.vo.{实体类名}Vo;
/**
* {业务名称}Mapper接口
*/
public interface {实体类名}Mapper extends BaseMapperPlus<{实体类名}Mapper, {实体类名}, {实体类名}Vo> {
}
Service 接口模板
package com.ruoyi.{module}.service;
import com.ruoyi.{module}.domain.vo.{实体类名}Vo;
import com.ruoyi.{module}.domain.bo.{实体类名}Bo;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.mybatis.core.page.PageQuery;
/**
* {业务名称}Service接口
*/
public interface I{实体类名}Service {
/**
* 查询{业务名称}
*/
{实体类名}Vo queryById(Long id);
/**
* 查询{业务名称}列表
*/
TableDataInfo<{实体类名}Vo> queryPageList({实体类名}Bo bo, PageQuery pageQuery);
/**
* 新增{业务名称}
*/
Boolean insertByBo({实体类名}Bo bo);
/**
* 修改{业务名称}
*/
Boolean updateByBo({实体类名}Bo bo);
/**
* 删除{业务名称}
*/
Boolean deleteByIds(Long[] ids);
}
Service 实现类模板
package com.ruoyi.{module}.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.core.utils.MapstructUtils;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import com.ruoyi.{module}.domain.bo.{实体类名}Bo;
import com.ruoyi.{module}.domain.vo.{实体类名}Vo;
import com.ruoyi.{module}.domain.{实体类名};
import com.ruoyi.{module}.mapper.{实体类名}Mapper;
import com.ruoyi.{module}.service.I{实体类名}Service;
/**
* {业务名称}Service业务层处理
*/
@RequiredArgsConstructor
@Service
public class {实体类名}ServiceImpl implements I{实体类名}Service {
private final {实体类名}Mapper baseMapper;
@Override
public {实体类名}Vo queryById(Long id) {
return baseMapper.selectVoById(id);
}
@Override
public TableDataInfo<{实体类名}Vo> queryPageList({实体类名}Bo bo, PageQuery pageQuery) {
LambdaQueryWrapper<{实体类名}> lqw = buildQueryWrapper(bo);
Page<{实体类名}Vo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
private LambdaQueryWrapper<{实体类名}> buildQueryWrapper({实体类名}Bo bo) {
LambdaQueryWrapper<{实体类名}> lqw = Wrappers.lambdaQuery();
// 添加查询条件
return lqw;
}
@Override
public Boolean insertByBo({实体类名}Bo bo) {
{实体类名} entity = MapstructUtils.convert(bo, {实体类名}.class);
return baseMapper.insert(entity) > 0;
}
@Override
public Boolean updateByBo({实体类名}Bo bo) {
{实体类名} entity = MapstructUtils.convert(bo, {实体类名}.class);
return baseMapper.updateById(entity) > 0;
}
@Override
public Boolean deleteByIds(Long[] ids) {
return baseMapper.deleteByIds(Arrays.asList(ids)) > 0;
}
}
Controller 模板
package com.ruoyi.{module}.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.common.web.core.BaseController;
import com.ruoyi.{module}.domain.bo.{实体类名}Bo;
import com.ruoyi.{module}.domain.vo.{实体类名}Vo;
import com.ruoyi.{module}.service.I{实体类名}Service;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
/**
* {业务名称}Controller
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/{module}/{路径}")
@Tag(name = "{业务名称}管理", description = "{业务名称}管理")
public class {实体类名}Controller extends BaseController {
private final I{实体类名}Service service;
/**
* 查询{业务名称}列表
*/
@Operation(summary = "查询{业务名称}列表")
@SaCheckPermission("{模块}:{功能}:list")
@GetMapping("/list")
public TableDataInfo<{实体类名}Vo> list({实体类名}Bo bo, PageQuery pageQuery) {
return service.queryPageList(bo, pageQuery);
}
/**
* 获取{业务名称}详细信息
*/
@Operation(summary = "获取{业务名称}详细信息")
@SaCheckPermission("{模块}:{功能}:query")
@GetMapping("/{id}")
public R<{实体类名}Vo> getInfo(@PathVariable Long id) {
return R.ok(service.queryById(id));
}
/**
* 新增{业务名称}
*/
@Operation(summary = "新增{业务名称}")
@SaCheckPermission("{模块}:{功能}:add")
@PostMapping()
public R<Void> add(@Validated @RequestBody {实体类名}Bo bo) {
return toAjax(service.insertByBo(bo));
}
/**
* 修改{业务名称}
*/
@Operation(summary = "修改{业务名称}")
@SaCheckPermission("{模块}:{功能}:edit")
@PutMapping()
public R<Void> edit(@Validated @RequestBody {实体类名}Bo bo) {
return toAjax(service.updateByBo(bo));
}
/**
* 删除{业务名称}
*/
@Operation(summary = "删除{业务名称}")
@SaCheckPermission("{模块}:{功能}:remove")
@DeleteMapping("/{ids}")
public R<Void> remove(@PathVariable Long[] ids) {
return toAjax(service.deleteByIds(ids));
}
}
注意事项
- 所有占位符
{xxx}需要替换为实际值 - 权限字符串格式:
模块:功能:操作(如inspection:task:add) - 实体类字段需要添加合适的验证注解
- VO 和 BO 类需要单独创建
- 复杂查询逻辑在
buildQueryWrapper方法中实现