数据访问

JDBC 业务代码指南

使用 JDBC 仓储、QueryDSL SQL、Q 表与查询扩展点。

浏览全部手册
本页目录
文档来源与 Markdown 原文

权威正文:ineed-core/docs/guides/jdbc.md。网站按工作区快照同步,原文中的历史日期和验证范围保留。

开始编码前核对同版本源码;跨仓文件引用可在源码定位目录查找。

下载 Markdown 原文 ↓

JPAMyBatis-FlexR2DBC共同组成持久化开发入口。

Repository

业务 Repository 使用接口组合 Core 的 CRUD/状态等 fragment,声明 GetEntityClassOperation<E> 并提供 getEntityClass()。只组合对象实际需要的能力;不要生成空 RepositoryImpl 或转发壳。

简单外键 count/exists/delete/findBy 定义在具体仓储。派生方法表达字段条件并不自动代表所有租户、删除、权限条件已具备;按实际调用核对隔离。

完整参考:CategoryDefinitionRepository

Entity、Converter、Manager

Entity 使用当前 JDBC 基类和 Spring Data 映射,声明业务所需租户/状态能力。Converter 在 converter/,仅覆盖有特殊映射的方法。

Manager 组合具体能力,提供仓储 operation、converter 和查询表路径。业务规则放生命周期或领域方法,事务编排仍由 Service 承担。

查询使用本模块手写 QXxx extends QuerydslSqlTable;Manager 覆盖 getSqlTablePath() 并引用 Q 类型字段。不要将 JPA 自动生成 Q 类或 MyBatis-Flex TableDef 当作 JDBC 的实现。

源码参考:QCategoryDefinitionCategoryDefinitionManager

查询和关系

appendWhereOfQuery 等真实扩展点补业务过滤;关键字搜索通过既有入口声明字段。查询投影与 VO 对齐,检查排序、分页、空条件和 join 的租户/删除过滤。

关系查询由 Manager 组织查询并返回需要的 VO;Service 不先查关系 ID 再逐个回查对象。物理删除子表数据通过对应 Repository 方法封装,钩子时序见删除规范

验证

先运行 JDBC 框架契约入口,再验证真实目标数据库中的列映射、唯一约束、派生查询、join 和事务回滚。Core 的记录型或内存型仓储测试不能代替真实数据库。

在 Core 根目录运行框架链路:

mvn -pl ineed-core-tests/ineed-core-test-webmvc -am \
  -Dtest=WebMvcJdbcBusinessChainTest,WebMvcJdbcSearchBusinessChainTest \
  -Dsurefire.failIfNoSpecifiedTests=false test

命令的环境前提与证据分层见测试规范。业务数据库测试入口随具体模块维护,不使用教程命令重建已有业务库。

仍有疑问?按反馈清单整理复现信息 →