Mybatis_resultMap的关联方式实现多表查询(一对多)

a)在 ClazzMapper.xml 中定义多表连接查询 SQL 语句, 一次性查到需要的所有数据, 包括对应学生的信息.

b)通过<resultMap>定义映射关系, 并通过<collection>指定集合属性泛型的映射关系. 可以把<collection>看成一个<resultMap>使用. ofType 属性表示集合的泛型, 可以写全限定路径或别名.。

对比 MyBatis—resultMap 的关联方式实现多表查询(多 对一)

ClazzMapper:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  <mapper namespace="com.bjsxt.mapper.ClazzMapper"> 
  <resultMap type="clazz" id="cmap">
  	<id property="id" column="cid"/>
  	<result property="name" column="cname"/>
  	<result property="room" column="croom"/>
  	<collection property="stus" javaType="list" ofType="Student">
  		<id property="stid" column="sid"/>
  		<result property="stname" column="name"/>
  		<result property="stage" column="age"/>
  		<result property="stsex" column="sex"/>
  		<result property="stcid" column="scid"/>
  	</collection>
  </resultMap>
  	<select id="selAll" resultMap="cmap" >
  		select c.cid,c.cname,c.croom,s.sid,s.name,s.age,s.sex,s.scid
		from t_stu s
		right join t_class c
		on s.scid=c.cid 
  	</select>
  </mapper>

Test测试类:

package com.bjsxt.test;

import java.util.List;

import com.bjsxt.pojo.Clazz;
import com.bjsxt.service.ClazzService;
import com.bjsxt.service.Impl.ClazzServiceImpl;

public class TestSel {
	public static void main(String[] args) {
		ClazzService cs=new ClazzServiceImpl();
		List<Clazz> list = cs.selAll();
		for (Clazz clazz : list) {
			System.out.println(clazz);
		}
	}
}

运行截图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值