crud方法命名示例

以下是基于表名dste_project_indicator(项目指标表)的完整命名示例,覆盖各类增删改查场景:

1. 表名与实体类映射

java 复制代码
// 表名:dste_project_indicator
// 实体类:DsteProjectIndicatorEntity
public class DsteProjectIndicatorEntity {
    private Long id;
    private Long projectId;
    private String indicatorCode;
    private String indicatorName;
    // 其他字段...
}

2. 基础增删改查方法

java 复制代码
// 新增
int insert(DsteProjectIndicatorEntity entity);
int save(DsteProjectIndicatorEntity entity);

// 修改
int update(DsteProjectIndicatorEntity entity);
int modify(DsteProjectIndicatorEntity entity);

// 逻辑删除
int logicDeleteById(Long id);
int markAsDeletedById(Long id);

// 物理删除
int deleteById(Long id);
int removeById(Long id);

// 查询单条
DsteProjectIndicatorEntity selectById(Long id);
DsteProjectIndicatorEntity getById(Long id);

// 查询多条
List<DsteProjectIndicatorEntity> selectList(QueryParam param);
List<DsteProjectIndicatorEntity> listByCondition(QueryParam param);

3. 批量操作方法

java 复制代码
// 批量新增
int batchInsert(List<DsteProjectIndicatorEntity> entityList);
int insertBatch(List<DsteProjectIndicatorEntity> entityList);

// 批量修改
int batchUpdate(List<DsteProjectIndicatorEntity> entityList);
int updateBatch(List<DsteProjectIndicatorEntity> entityList);

// 批量逻辑删除
int batchLogicDeleteByIds(List<Long> ids);
int batchMarkAsDeleted(List<Long> ids);

// 批量物理删除
int batchDeleteByIds(List<Long> ids);
int batchRemoveByIds(List<Long> ids);

4. 条件操作方法

java 复制代码
// 条件新增(根据另一个实体创建)
int insertByEntity(DsteProjectIndicatorEntity template);
int saveFromTemplate(DsteProjectIndicatorEntity template);

// 条件修改(根据条件更新部分字段)
int updateByCondition(UpdateParam updateParam, QueryParam queryParam);
int modifyFieldsByCondition(Map<String, Object> fields, QueryParam condition);

// 条件逻辑删除
int logicDeleteByCondition(QueryParam param);
int disableByCondition(QueryParam param);

// 条件物理删除
int deleteByCondition(QueryParam param);
int removeByCondition(QueryParam param);

5. 分页与统计方法

java 复制代码
// 分页查询
Page<DsteProjectIndicatorEntity> selectPage(PageParam pageParam, QueryParam queryParam);
IPage<DsteProjectIndicatorEntity> pageByCondition(PageParam page, QueryParam condition);

// 统计查询
Long countByCondition(QueryParam param);
Integer countActiveIndicators();

6. 复杂业务方法

java 复制代码
// 按项目ID查询指标列表
List<DsteProjectIndicatorEntity> selectByProjectId(Long projectId);
List<DsteProjectIndicatorEntity> listIndicatorsByProject(Long projectId);

// 按指标编码查询(唯一键)
DsteProjectIndicatorEntity selectByCode(String indicatorCode);
DsteProjectIndicatorEntity getByUniqueCode(String code);

// 逻辑删除并关联删除子指标
int logicDeleteWithChildren(Long id);
int disableIndicatorCascade(Long id);

// 批量新增并返回主键
List<Long> batchInsertAndReturnIds(List<DsteProjectIndicatorEntity> entityList);

命名原则总结

  1. 动词选择:

    • 新增 :insert/save/create
    • 修改 :update/modify/edit
    • 删除 :delete/remove(物理)、logicDelete/disable/markAsDeleted(逻辑)
    • 查询 :select/get/list/page
  2. 参数与返回值:

    • 单数形式(如 insert)处理单个实体
    • 复数形式(如 batchInsert)处理集合
    • 带 ByXXX 后缀表示按条件操作
  3. 业务场景:

    • 包含业务对象名称(如 ProjectIndicator)
    • 特殊场景使用特定动词(如 archive/invalidate/restore)
  4. 代码风格一致性:

    • 保持项目内方法命名统一(如统一用 insert 或 save)
    • 使用 Entity/Param/VO 明确参数类型

示例实现(MyBatis Mapper)

java 复制代码
public interface DsteProjectIndicatorMapper {
    // 单条新增
    @Insert("INSERT INTO dste_project_indicator (...) VALUES (...)")
    int insert(DsteProjectIndicatorEntity entity);

    // 批量新增
    @Insert("<script>INSERT INTO dste_project_indicator (...) VALUES " +
            "<foreach collection='list' item='item' separator=','>(...)</foreach></script>")
    int batchInsert(@Param("list") List<DsteProjectIndicatorEntity> entityList);

    // 条件逻辑删除
    @Update("UPDATE dste_project_indicator SET delete_at = NOW() WHERE project_id = #{projectId}")
    int logicDeleteByProjectId(@Param("projectId") Long projectId);

    // 分页查询
    List<DsteProjectIndicatorEntity> selectPage(
        @Param("page") PageParam pageParam, 
        @Param("condition") QueryParam condition
    );
}

根据实际业务需求(如数据库类型、ORM框架、事务要求等),选择最合适的命名方式和实现策略。

相关推荐
wangchunyu11416 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck16 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir16 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人17 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法
2501_9445215917 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
meiying883818 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
@大迁世界19 小时前
告别 Go,拥抱 Rust
开发语言·golang·rust
SEO_juper19 小时前
Node.js 重定向链检测工具:301 跳了几跳、有没有成环,一次看清
xml·开发语言·python·node.js·json·bash
南归北隐19 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
学逆向的19 小时前
C 指针常量与常量指针
c语言·开发语言·网络安全