6、ssm之关联查询

本文详细介绍了SSM(Spring、SpringMVC、MyBatis)框架中的一对一、一对多和多对多关联查询。通过示例展示了如何在Mapper.xml中配置resultMap,以及如何在Java代码中进行测试。重点讲解了association和collection的使用场景及其在映射结果集时的作用。
摘要由CSDN通过智能技术生成

ssm之关联查询

一对一查询

方法一

使用 resultType,定义订单信息 po 类,此 po 类中包括了订单信息和用户信息

sql语句
SELECT orders.*, user.username, user.address FROM orders, user WHERE orders.user_id=user.id
定义 po 类

OrdersCustom 类继承 Orders 类后 OrdersCustom 类包括了 Orders 类的所有字段,只需要定义 用户的信息字段即可。

public class OrdersCustom extends Orders {
   
	private String username;// 用户名称 
    private String address;// 用户地址 
    get/set...
}
Mapper.xml
<!-- 查询所有订单信息 --> 
<select id="findOrdersList" resultType="cn.itcast.mybatis.po.OrdersCustom"> 
    SELECT orders.*, user.username, user.address FROM orders,user WHERE orders.user_id = user.id 
</select>
Mapper 接口
public List<OrdersCustom> findOrdersList() throws Exception;
测试
public void testfindOrdersList()throws Exception{
    
    //获取session 
    SqlSession session = sqlSessionFactory.openSession(); 
    //获限mapper接口实例 
    UserMapper userMapper = session.getMapper(UserMapper.class); 
    //查询订单信息 
    List<OrdersCustom> list = userMapper.findOrdersList(); 
    System.out.println(list); 
    //关闭session 
    session.close(); 
}

定义专门的 po 类作为输出类型,其中定义了 sql 查询结果集所有的字段。此方法较为简单和常用。

方法二

使用 resultMap,定义专门的 resultMap 用于映射一对一查询结果。

sql语句
SELECT orders.*, user.username, user.address FROM orders, user WHERE orders.user_id=user.id
定义 po 类

在 Orders 类中加入 User 属性,user 属性中用于存储关联查询的用户信息,因为订单关联查询用户是一对一关系,所以这里使用单个 User 对象存储关联查询的用户信息。

Mapper.xml
<select id="findOrdersListResultMap" resultMap="userordermap"> 
    SELECT orders.*, user.username, user.address FROM orders,user WHERE orders.user_id = user.id 
</select>

这里 resultMap 指定 userordermap 。

定义 resultMap

需要关联查询映射的是用户信息,使用 association 将用户信息映射到订单对象的用户属性中。

<!-- 订单信息resultmap --> 
<resultMap type="cn.itcast.mybatis.po.Orders" id="userordermap"> 
    <!-- 这里的id,是mybatis在进行一对一查询时将user字段映射为user对象时要使用, 必须写 --> 
    <id property="id" column="id"/> 
    <result property="user_id" column
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值