资源预览内容
第1页 / 共18页
第2页 / 共18页
第3页 / 共18页
第4页 / 共18页
第5页 / 共18页
第6页 / 共18页
第7页 / 共18页
第8页 / 共18页
第9页 / 共18页
第10页 / 共18页
亲,该文档总共18页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第3章 MyBatis使用进阶本章内容u高级关联u集合映射u关联优化本章目标u掌握关联结果的配置与使用u掌握集合映射的配置与使用u掌握关联的嵌套结果关联u关联关系是一种结构化的关系,指一种对象和另一种对象有联系。给 定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关 对象。在UML图中,关联关系用一条实线来表示。u关联可以有方向,表示该关联在某方向被使用。只在一个方向上存在 的关联,称为单向关联(Unidirectional Association),在两个方向 上都存在的关联,称为双向关联(Bidirectional Association)关联配置u关联元素处理“有一个”类型的关系。例如,一篇博客有一个作者,多个 评论属于同一个博客。关联映射便工作于这种情况之上。一对一和多对 一的关联在mybatis中均使用同一种配置来完成。public class Blog implements Serializable private Integer id; private Author author; /博客关联的作者对象 private String title; private String content; private Date createTime; private int type; /. 关联配置u语法:属性描述 property映射到列结果的字段或属性。如果 匹配的是存在的、与给定名称相同 的JavaBeans 的属性,则会使用 column来自数据库的列名或重命名的列标 签。此与通常传递给 resultSet.getString(columnName) 方法的字符串相同 javaType一个 Java 类的完全限定名,或一 个类型别名 select另外一个映射语句的ID,可以加载 该属性映射需要的复杂类型。获取 的在列属性中指定的列的值将被传 递给目标select 语句作为参数select * from author where id = #idselect * from blog where id = #id关联配置u实现博客获取作者信息u博客关联作者u通过博客访问作者信息关联配置集合映射u如何实现一个对象找到一个集合对象,实现一对多的关系?集合映射u实现从一篇博客到多个评论的关联u语法:select * from comment where blog_id = #idselect * from author where id = #idselect * from blog where id = #id集合映射u通过一篇文章找到该文章的所有评论信息u实现一对多的关联(集合映射)u推荐步骤n在实体类中添加集合关联n配置关联n获取数据配置与性能优化u在前面的配置中(关联配置,集合映射配置)都会出现一个N+1查询 问题n每次执行一次查询都会伴随着另一个查询语句来加载关联的对象或集合, 如果加载的关联数据较多,则执行的查询语句次数会增加。u使用嵌套结果来提高查询效率嵌套结果的使用u关联映射的嵌套结果select B.id, B.title, B.author_id, B.content, B.create_time, B.type, A.id, A.username, A.password, A.email, A.address, A.phone from Blog B left outer join Author A on B.author_id = A.id嵌套结果的使用u在配置中,我们使用了resultMap=“authorResult“来设置结果映射 的ID,可以映射关联的嵌套结果到一个合适的对象中。允许联合多 个表来合成到一个单独的结果集,不同于前面的嵌套查询使用多个 查询语句。集合嵌套结果u在集合映射中,使用结果嵌套与在关联中类似,此处不作赘述,修改后 的BlogMapper.xml配置文件代码如下:select B.*, C.id, C.content as comment_content, C.postDate from Blog B left outer join Comment C on b.id = c.blog_id where B.id = #id嵌套结果u使用嵌套结果重构前面的案例总结u在mybatis中,可以通过关联映射与集合映射来实现多对一和一对多 的关系,这样即可很方便地通过一个对象找到关联的其他对象或通过 一个对象找到关联的多个对象,以便于获取数据。u关联映射用于实现对象之间一对一、多对一的情况,通过配置 association标签来实现关联。u集合映射用于实现对象之间一对多的关联,通过配置collection标签 来实现。u在关联中加载对象,mybatis使用了两种不同的方式: (1)嵌套查询。嵌套查询会出现“N+1”查询问题,多次执行SQL语句影响 程序的效率。 (2)嵌套结果。嵌套结果可以使用连接查询来完成对象之间结果的嵌套, 避免了嵌套查询出现的问题。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号