小程序三方平台开发: 解析小程序开发的未来趋势和机遇
956
2022-11-06
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~