正在回答 回答被采纳积分+1
同学你好,可能我的表述方式不够清楚让同学误会了,让我重新换个思路再给同学说明一遍。
这里先明确我们要解决的问题是,在查询User对象的时候,希望它对应的多个Address能够填充到对象的地址集合属性中。
1、通过findUsers,我们找到了一个结果集,这里含有所有user表中的字段。这个结果集需要按照resultMap指定的规则映射到实体对象,于是MyBatis开始解析ResultMap。
2、通过ResultMap中的id、result等标签,id和username都映射到了User对象中。下面遇到了collection标签。MyBatis中的collection标签是用来映射集合属性的。所以需要另一个查询查出一个集合来,组装出集合对象再放入当前这个User对象中。
3、在collection标签中,select指明了使用哪个查询结果来填充集合,property指定了User中需要被填充的参数名。column指定了用当前findUsers结果集中的哪一列来作为参数提供给这个select指定的查询,即user表中的id这一列作为参数依据它查询address表。ofType指定了需要映射的集合中每个元素的类型。
如果解答了同学的疑问,望采纳~
祝学习愉快~
同学你好。
1、resultMap可以看做是组装一个接收的中转站,将查询出的结果集,指定字段映射到对应实体对应属性上,使用它的是下面这个查询:
2、MyBatis在进行解析时,将findUsers查询出的id这一列作为参数,传递给了getAddress这个查询中。并将其查询结果生成一个Address类型的集合,并且将其对应到了addresses属性。
3、通过以上,我们得到了一个完整的User对象,其中的address属性的集合来源于getAddress查询出的结果集。其余的属性来源于findUsers查询出的结果集。
如果解答了同学的疑问,望采纳~
祝学习愉快~
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星