myBatis系列之一:搭建开发环境
myBatis系列之二:以接口方式交互数据
myBatis系列之三:增删改查
myBatis系列之五:与Spring3集成
myBatis系列之六:与SpringMVC集成
myBatis系列之七:事务管理
myBatis系列之三:增删改查是基于单表的查询,如果联表查询,返回的是复合对象,需要用
association关键字来处理。
如User发表Article,每个用户可以发表多个Article,他们之间是一对多的关系。
1. 创建Article表,并插入测试数据:
-- Drop the table if exists
DROP TABLE IF EXISTS `Article`;
-- Create a table named 'Article'
CREATE TABLE `Article` (
`id` int NOT NULL AUTO_INCREMENT,
`user_id` int NOT NULL,
`title` varchar(100) NOT NULL,
`content` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- Add several test records
INSERT INTO `article`
VALUES
('1', '1', 'title1', 'content1'),
('2', '1', 'title2', 'content2'),
('3', '1', 'title3', 'content3'),
('4', '1', 'title4', 'content4');
2. com.john.hbatis.model.Article类:
public class Article {
private int id;
private User user;
private String title;
private String content;
// Getters and setters are omitted
}
3. 在IUserMapper中添加:
List<Article> getArticlesByUserId(int id);
4. 在User.xml中添加:
<resultMap type="com.john.hbatis.model.Article" id="articleList">
<id column="a_id" property="id" />
<result column="title" property="title" />
<result column="content" property="content" />
<association property="user" javaType="User"><!-- user属性映射到User类 -->
<id column="id" property="id" />
<result column="name" property="name" />
<result column="address" property="address" />
</association>
</resultMap>
<select id="getArticlesByUserId" parameterType="int" resultMap="articleList">
select u.id, u.name, u.age, u.address, a.id a_id, a.title, a.content
from article a
inner join user u
on a.user_id=u.id and u.id=#{id}
</select>
5. 测试方法:
@Test
public void getArticlesByUserIdTest() {
SqlSession session = sqlSessionFactory.openSession();
try {
IUserMapper mapper = session.getMapper(IUserMapper.class);
List<Article> articles = mapper.getArticlesByUserId(1);
for (Article article : articles) {
log.info("{} - {}, author: {}", article.getTitle(), article.getContent(), article.getUser().getName());
}
} finally {
session.close();
}
}
附:
除了在association标签内定义字段和属性的映射外,还可以重用User的resultMap:
<association property="user" javaType="User" resultMap="userList" />
参考:
http://www.yihaomen.com/article/java/306.htm
分享到:
相关推荐
本篇文章将深入探讨MyBatis系列中的第五个主题——如何将MyBatis与Spring3进行集成,以实现更高效、更灵活的Java企业级应用开发。 MyBatis是一个轻量级的SQL映射框架,它允许开发者将SQL语句直接写在XML配置文件...
在MyBatis系列的第三部分,我们将深入探讨“一对多双向关联”的概念及其实现方法。 首先,理解“一对多”关联是关键。在数据库设计中,这种关系表示一个实体(如订单)可以与多个其他实体(如订单中的商品)相关联...
本文将深入探讨MyBatis系列的第二部分:单表的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,即CRUD。通过理解和掌握这些基本操作,开发者可以有效地管理数据库中的数据。 首先,我们来了解...
本资源是"Mybatis系列学习源码",适合初学者和有一定经验的开发者深入理解Mybatis的工作原理和实践应用。下面将详细探讨Mybatis的核心概念和关键功能。 1. **SqlSession与Executor** - **SqlSession**:它是...
【标题】:Mybatis系列教程Mybatis基本应用共9页.pdf 【描述】:这份教程是关于Mybatis基本应用的详细讲解,包含了9页丰富的内容,旨在帮助学习者深入理解和掌握Mybatis这一强大的持久层框架。 【标签】:Mybatis...
这个压缩包文件 "0809MyBatisHomework" 可能包含了与 Mybatis 相关的一系列实践案例,用于配合作者的"Mybatis notes"系列博客,帮助读者深入理解和应用 Mybatis 技术。 1. **Mybatis 简介**:Mybatis 是一款轻量级...
【标题】"Mybatis系列教程Mybatis插件共8页.pdf.z" 提供的信息表明,这是一个关于Mybatis框架的教程,特别关注Mybatis插件的使用。Mybatis是一款流行的Java持久层框架,它允许开发者直接编写SQL语句,提供灵活的数据...
总结来说,MyBatis的关联映射和缓存配置是其核心功能之一,它们帮助开发者高效地处理对象关系和提高数据访问性能。通过深入学习和熟练应用这些特性,Java开发者能够在实际项目中更好地运用MyBatis框架,提升开发效率...
这个压缩包文件"MyBatis系列操作资源"显然包含了与MyBatis相关的各种教程、示例代码或者项目实践,特别是涉及到一对一查询的实践。 首先,我们要理解MyBatis的核心概念。MyBatis抛弃了传统的基于JDBC的繁琐数据操作...
"Mybatis系列课程-Association"显然是一个专门针对Mybatis中“关联”这一概念的教程。在本课程中,我们将深入探讨Mybatis如何处理实体类之间的关联关系,以及如何通过XML或注解配置来实现这种关联。 首先,我们需要...
5. **Nested Select**:Mybatis通过在主查询中嵌入子查询来实现关联数据的加载。例如,使用`<collection>`标签的`select`属性指定一个查询语句,这个查询将被插入到主查询的SQL中,以便获取子对象列表。 6. **...
【标题】"Mybatis系列教程Mybatis复杂映射开发共6页" 提供了一个关键信息,即本教程专注于Mybatis的复杂映射开发,这通常指的是在Mybatis框架中处理多对一、一对多、多对多等复杂数据关系的能力。Mybatis作为一个...
【标题】:Mybatis系列教程Mybatis架构原理共4页.pdf 【描述】:这个压缩文件包含了一份关于Mybatis架构原理的系列教程,总计四页的内容。Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。...
【标题】"Mybatis系列教程Mybatis注解开发共9页.pdf" 提供的是一个关于Mybatis框架注解开发的教程,重点在于讲解如何在Mybatis中使用注解进行数据库操作。Mybatis是一个轻量级的Java持久层框架,它允许开发者通过...
mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action...
MyBatis-Plus(简称MP)是一个为MyBatis做拓展的工具,它简化了常见的数据操作,如插入、删除、更新和查询。MP提供了CRUD操作的便捷方法,支持主键自动生成、条件构造器、关联查询等功能,使得开发者无需编写大量...
9. **一对一、一对多、多对多关系映射**:MyBatis支持复杂的数据关联查询,如联合主键、外键等。 10. **MyBatis Plus**:作为MyBatis的增强工具,提供了更多的实体类操作,如自动填充创建时间和修改时间、批量插入...
5. **Spring Data JPA**和**MyBatis**:比较这两者在数据访问层的不同实现,讨论各自的优点和适用场景。 6. **Spring Security**:介绍Spring的安全管理功能,如身份验证、授权和会话管理。 其次,MyBatis是一个...
在"Mybatis官方网址跟进学习视频的查询例题"这个资源中,你可以找到一系列与Mybatis相关的查询实例,这对于初学者来说是非常有价值的。Mybatis-plus是Mybatis的一个增强工具,它在Mybatis的基础上做了很多简化和扩展...
【标题】"MyBatis高级查询+JFreeChart热点"是一个综合的学习项目,它涵盖了数据库操作和数据可视化两个重要领域。MyBatis是Java开发中常用的一个持久层框架,而JFreeChart则是一个用于创建高质量图表的库。下面将...