Skip to content

数据与通用能力 ​

数据访问分层 ​

text
Service
  → Repo
  → Mapper / MyBatis-Plus
  → MySQL

实体描述表字段,Mapper 负责 MyBatis 映射,Repo 封装可复用的数据访问方法。简单实体操作可以使用 MyBatis-Plus 能力,复杂联表、权限查询和高频路径应编写明确 SQL。

基础字段 ​

系统实体通常包含:

字段作用
id主键
delete_time逻辑删除时间
deleted逻辑删除标记
create_time、create_by创建审计
update_time、update_by更新审计

审计字段由统一机制填充。逻辑删除扩展会在 MyBatis-Plus 删除操作时无感写入 delete_time,业务代码不需要逐个手工更新。

状态和字典值 ​

  • 通用状态使用字符串值:1-启用、2-禁用。
  • 性别使用整数:0-未知、1-男性、2-女性。
  • 资源类型使用整数:1-菜单、2-页面、3-按钮、4-接口、5-分组。
  • 布尔语义字段使用 Boolean,例如 visible、is_link、is_used。

后端 DTO 使用枚举校验,前端使用常量映射;不要在页面中散落无说明的魔法值。

通用查询条件 ​

通用查询允许客户端按三段式规则表达简单条件:

text
propertyName:op:value

安全边界包括:

  • propertyName 必须是当前查询对象的真实 Java 属性。
  • 不允许静态字段、合成字段和查询条件容器字段。
  • 操作符必须来自后端允许列表。
  • 值通过 MyBatis 参数机制处理,不直接拼接为可执行 SQL。

复杂筛选应增加专用 Query DTO 和 Mapper SQL,不建议不断扩张通用条件语法。

索引与唯一性 ​

唯一性需要数据库约束和应用提示共同保证。设计索引时重点检查:

  • 高频等值查询字段。
  • 关联表两端外键字段。
  • 逻辑删除条件与业务唯一键的组合。
  • 用户名、角色编码、资源权限标识、App 账号等身份字段。

不要为低选择性布尔字段单独增加大量索引;索引是否有效应结合真实查询和执行计划判断。

YeahBoot 官方技术文档