登录 注册 写文章
首页下载APP
mybatis-plus 注解实现多表关联查询的最佳实践
一个鸡蛋壳儿关注赞赏支持mybatis-plus 注解实现多表关联查询的最佳实践
在之前一篇文章 MyBatis多表关联的无SQL通用方案 中我们提到了注解绑定关联查询的实践方案,这里我们再汇总梳理一下常用开发场景中需要涉及到 关联 的场景以及其要支持的绑定方式。
1. 注解自动绑定数据字典(自定义枚举)的显示值Label
开发过程中的枚举值,比如用户状态(ACTIVE:激活,LOCKED:锁定 ...)、身份证类型等,我们会将其名称name和值value定义在数据字典表,以支持扩展不改代码以及用户可编辑。其他数据表中关联该字典时,存储对应的value,显示时又需要查询字典表将value转换为对应的name。
通过注解绑定,我希望简单使用如这样:
@BindDict(type="USER_STATUS", field = "status")
private String statusLabel;
2. 注解自动绑定其他表的字段
如部门实体Department(department表的Java映射对象)对应的VO对象中需要关联组织Organization实体(organization表的映射对象)。
我希望简单使用如这样:
// 支持关联条件+附加条件绑定字段
@BindField(entity=Department.class, field="name", condition="department_id=id AND parent_id>=0")
private String deptName;
// 支持通过中间表的级联关联绑定字段
@BindField(entity = Organization.class, field="name", condition="this.department_id=department.id AND department.org_id=id")
private String orgName;
3. 注解自动绑定其他表实体Entity
如部门实体Department(department表的Java映射对象)对应的VO对象中需要关联组织Organization实体(organization表的映射对象)。
我希望简单使用如这样:
// 支持关联条件+附加条件绑定Entity
@BindEntity(entity = Department.class, condition="department_id=id")
private Department department;
// 通过中间表的级联关联绑定Entity(支持附加条件)
@BindEntity(entity = Organization.class, condition = "this.department_id=department.id AND department.org_id=id AND department.deleted=0")
private Organization organization;
4. 注解自动绑定其他表实体集合List<Entity>
如部门实体Department对应的VO对象中需要关联多个子部门Department实体。
我希望简单使用如这样:
// 支持关联条件+附加条件绑定多个Entity
@BindEntityList(entity = Department.class, condition = "id=parent_id")
private List<Department> children;
// 通过中间表的 多对多关联 绑定Entity(支持附加条件)
@BindEntityList(entity = Role.class, condition="this.id=user_role.user_id AND user_role.role_id=id")
private List<Role> roleList;
实现以上方案,开发过程中的大部分关联场景SQL都可以大大简化,使代码具备极好的可维护性。另外以上方案实现需要拆解成单表查询SQL通过主键去查询,可以充分利用数据库缓存,提高性能。
详细了解其实现代码,请至 Diboot - 简单高效的轻代码开发框架 (欢迎star)
推荐阅读更多精彩内容
- Mybatis单表CRUD与多表关联的无SQL通用方案_2: 无SQL实现关联查询的自动绑定 上一篇无SQL实现单表CRUD中我们已经通过Mybatis-plus插件的通用Mapper实现了单表的CRUD的无... 一个鸡蛋壳儿阅读 89评论 0 赞 0
- MarkDown 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的... 笨鸟慢飞阅读 1,808评论 0 赞 1
- oracle错误集合 ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O... 我想起个好名字阅读 1,597评论 0 赞 6
- JAVA知识点集锦(下) 这部分主要是开源Java EE框架方面的内容,包括Hibernate、MyBatis、Spring、Spring ... 杂货铺老板阅读 416评论 0 赞 2
- JPA快速入门(二) 作者:钟昕灵,叩丁狼教育高级讲师。原创文章,转载请注明出处。 大纲: 对象关系映射关联关系映射单向多对一单向一对多... 叩丁狼教育阅读 638评论 0 赞 2