当前位置: 首页 > news >正文

Mybatis多表查询,从“学”到“不会”

Mybatis多表查询总结

1多表查询的主要实现方式

join查询

<select id="#" resultMap="#"> select <include refid="#" /> from # left join # on # = # </select>
核心特点:

  • 使用join语句可以一次性从多张表中获取数据
  • 通过resultMap中的association标签将结果映射到对象的关联属性中
  • 只执行一次sql查询

2ResultMap

2.1association标签

<association property="#" javaType="#.domain.Department"> <id column="#" property="#" /> <result column="#" property="#" /> <result column="#" property="#" /> </association>
配置要点

  • properity:实体类中的属性名
  • javaType:关联属性的类名
  • 内部的id和result标签配置关联表字段与实体属性的映射

3避免列名冲突的方法

3.1使用表别名

例如
select e.empno, e.ename, e.deptno, d.deptno as d_deptno, d.dname, d.loc
from emp e left join dept d on e.deptno = d.deptno

3.2使用列别名例如

deptno as dno

3在ResultMap中明确指定列与属性的映射关系

<result column="deptno" property="deptno" /> <id column="d_deptno" property="deptNo" />

4SQL片段的使用

通过标签引用SQL片段:select

5常见错误及解决方案

5.1列名错误

错误:
java.sql.SQLIntegrityConstraintViolationException: Column 'deptno' in field list is ambiguous
原因:多个表中存在相同名称的列,且在SQL中未明确指定表来源 解决方案:为所有列添加表别名,如e.deptno和d.deptno
5.2XML语法错误
错误:元素类型'mapper'必须由匹配的结束标记''终止
原因:XML标签未正确闭合或嵌套错误 解决方案:检查XML语法,确保所有标签都正确闭合,嵌套关系正确

http://www.jsqmd.com/news/313529/

相关文章:

  • Java 大视界 -- Java 大数据在智慧养老服务需求分析与个性化服务匹配中的应用 - 实践
  • 尝试使用 Kimi 生成网页
  • 26年寒假生活指导1.28
  • 洗发水防脱生发哪个牌子好,口碑好的洗发水品牌,好用的防脱生发洗发水推荐
  • 2026长沙GEO服务商推荐:实测TOP5榜单及核心竞争力解析
  • 2026年电力施工仪器推荐:六氟化硫气体检测仪品牌榜单
  • 2026扬州办公设备租赁优质服务商推荐榜
  • 2026问题肌护理优质品牌推荐榜 云兮颜专业之选
  • 2026年辅酶Q10品牌核心优势深度盘点与推荐:解码细胞级靶向抗衰的科技突围
  • 高维向量空间的加法|Transformer的位置向量
  • 机器学习模型部署:将模型转化为Web API
  • Jupyter Notebook/Lab使用技巧大全
  • Python迭代器(Iterator)揭秘:for循环背后的故事
  • 自动化与脚本
  • 实时操作系统中的C++
  • Python性能优化技巧:让你的代码飞起来
  • 将Python Web应用部署到服务器(Docker + Nginx)
  • 嵌入式C++实时内核
  • 225_尚硅谷_类型断言最佳实践(2)
  • iso 22301认证/iso 27001认证/iso 5001认证/iso认证/企业做认证/特种设备充装许可证/选择指南
  • C++中的装饰器模式
  • 基于matlab的全局路径规划算法中的快速扩展随机树RRT路径规划算法及其改进方法RRT
  • 2026上海浦东婚礼酒店、婚礼宴会厅、一站式婚礼酒店优质推荐
  • C++安全编程指南
  • 定时任务专家:Python Schedule库使用指南
  • 电机电磁振动噪声 NVH 的救星——Manatee 1.09
  • 代码生成与元编程
  • C++编译期数学计算
  • 分布式计算C++库
  • 二进制序列化与反序列化