33MyBatis - 关联查询(一对多查询)

简介: 33MyBatis - 关联查询(一对多查询)

MyBatis一对多查询案例

商品订单数据模型

一对多查询

案例:查询所有用户信息及用户关联的订单信息。

用户信息和订单信息为一对多关系。

sql语句

SELECT
  u.id,
  u.username,
  u.birthday,
  u.sex,
  u.address,
  o.id oid,
  o.number,
  o.createtime,
  o.note
FROM 
`user` u
LEFT JOIN `order` o 
ON u.id = o.user_id

修改pojo类

在User类中加入List orders属性,如下图:

Mapper.xml

在UserMapper.xml添加sql,如下:

<resultMap type="user" id="userOrderResultMap">
  <id property="id" column="id" />
  <result property="username" column="username" />
  <result property="birthday" column="birthday" />
  <result property="sex" column="sex" />
  <result property="address" column="address" />
  <!-- 配置一对多的关系 -->
  <collection property="orders" javaType="list" ofType="order">
    <!-- 配置主键,是关联Order的唯一标识 -->
    <id property="id" column="oid" />
    <result property="number" column="number" />
    <result property="createtime" column="createtime" />
    <result property="note" column="note" />
  </collection>
</resultMap>
<!-- 一对多关联,查询订单同时查询该用户下的订单 -->
<select id="queryUserOrder" resultMap="userOrderResultMap">
  SELECT
  u.id,
  u.username,
  u.birthday,
  u.sex,
  u.address,
  o.id oid,
  o.number,
  o.createtime,
  o.note
  FROM
  `user` u
  LEFT JOIN `order` o ON u.id = o.user_id
</select>

Mapper接口

编写UserMapper接口,如下图:

测试方法

在UserMapperTest增加测试方法,如下

@Test
public void testQueryUserOrder() {
  // mybatis和spring整合,整合之后,交给spring管理
  SqlSession sqlSession = this.sqlSessionFactory.openSession();
  // 创建Mapper接口的动态代理对象,整合之后,交给spring管理
  UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
  // 使用userMapper执行根据条件查询用户
  List<User> list = userMapper.queryUserOrder();
  for (User u : list) {
    System.out.println(u);
  }
  // mybatis和spring整合,整合之后,交给spring管理
  sqlSession.close();
}

效果

测试效果如下图:



目录
相关文章
|
2月前
|
SQL Java 关系型数据库
Mybatis多表关联查询与动态SQL(下)
Mybatis多表关联查询与动态SQL
77 0
|
2月前
|
SQL Java 数据库连接
Mybatis多表关联查询与动态SQL(上)
Mybatis多表关联查询与动态SQL
48 0
|
2天前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
19 11
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MybatisPlus-标准CRUD制作,新增boolean save(T t),删除 ~ delete(int id),修改 ~ update(T t),根据id查询,T getById....
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MyBatisPlus如何根据id批量查询?Required request parameter ‘id‘ for method 解决方法是看青戈大佬MybatisPlus的教程
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
MybatisPlus介绍新增用户,根据id查询,引入MybatisPlus的起步依赖,增删改查最简单的写法
|
20天前
|
Java 数据库连接 mybatis
Mybatis基于注解的一对一和一对多查询
Mybatis基于注解的一对一和一对多查询
23 0
|
20天前
|
SQL Java 数据库连接
Mybatis中一对多mapper配置
Mybatis中一对多mapper配置
18 0
|
2月前
|
算法 BI 数据库
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
MyBatisPlus查询条件设置、映射匹配兼容性、id生成策略、多数据操作
66 3
|
2月前
|
SQL Java 数据库连接
MyBatis 查询数据库
MyBatis 查询数据库