MyBatis resultMap id标签的错误使用方式

网友投稿 956 2022-11-06

MyBatis resultMap id标签的错误使用方式

MyBatis resultMap id标签的错误使用方式

目录MyBatis resultMap id标签的错误使用本节的问题主要是我对mybatis id标签的错误使用resultMap标签的使用规则自定义结果映射规则association联合查询使用association进行分布查询collection分步查询

MyBatis resultMap id标签的错误使用

我们在编写VO对象,如果业务场景稍微复杂一点,就会用到集合属性。例如用户查看个人订单列表,每个订单又包含多种或者多个规格的商品。

本节的问题主要是我对mybatis id标签的错误使用

id是resultMap以及Collection的子标签,标记出作为 ID 的结果可以帮助提高整体性能。特别注意的是,id是当前命名空间中的一个唯一标识,用于标识一个结果映射。

如下图,itemId(商品id)字段值在数据库中不唯一,错误使用会导致只返回该订单某商品的一条记录。因为对于某个商品,麻辣味和五香味只是商品规格,其商品id是相同的。

改用普通result标签后,返回正确结果。

EOF

resultMap标签的使用规则

自定义结果映射规则

select * from employee where id=#{id}

association联合查询

association可以指定联合的javabean对象property="dept":指定哪个属性是联合对象javaType:指定这个属性的类型

select e.id id,e.name empName,e.email email,e.sex sex,e.d_id d_id,

d.id did,d.name deptName from employee e,dept d

where e.d_id=d.id and e.id=#{id}

使用association进行分http://布查询

1、先按照员工id查询员工信息将会调用查询员工的sql

2、根据查询员工信息中的d_id值去部门表中查出部门信息

3、部门设置到员工中

column="d_id">

column="d_id">

select * from employee where id=#{id}

嵌套结果集的方式,使用collection标签定义关联的集合类型的属性封装规则

select d.id did,d.name deptName,e.id eid,

e.name empName,e.sex,e.email

from dept d left join employee e

on d.id=e.d_id

where d.id=#{id}

collection分步查询

column="{id}">

column="{id}">

select * from employee where d_id=#{deptId}

select * from dept where id=#{id}

当分布查询需要传递多个多个值时,将多个值封装map传递

colum=“{key1=column1,key2=colum2...}”

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:解决mybatis无法给带有下划线属性赋值问题
下一篇:详解Tomcat 配置文件server.xml
相关文章

 发表评论

暂时没有评论,来抢沙发吧~