collection 两张表查询

场景:

两张表:学生基础信息表A,学生成绩表B,两张表通过userId关联

返回结果:以学生为维度返回列表,学生有一个外部属性:成绩列表

			语文	100
张三	u001 成绩	数学	99
			英语	88
李四	u002 成绩	语文	66
			数学	77
			英语	99
王五	u003 成绩	语文	22
			数学	55
			英语	33

Mapper.xml

<?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.user.mapper.read.UserReaderMapper" >
	<resultMap id="BaseResultMap" type="com.user.pojo.UserPojo" >
		<id column="id" property="id" jdbcType="INTEGER" />
		<result column="user_id" 		 property="userId" 		  jdbcType="VARCHAR" />
		<result column="user_name" 		 property="userName" 	  jdbcType="VARCHAR" />
		<collection property="scorePojos"    column="user_id"   select="queryUserScoreList" />
	</resultMap>

	<resultMap id="UserScoreResultMap" type="com.user.pojo.UserScorePojo" >
		<result column="user_id" property="userId" jdbcType="VARCHAR" />
		<result column="subject" property="subject" jdbcType="VARCHAR" />
		<result column="score" property="score" jdbcType="VARCHAR" />
	</resultMap>
  
	<sql id="Base_Column_List" >
		id, user_id, user_name
	</sql>
  
<select id="queryUserList" resultMap="BaseResultMap" parameterType="com.user.param.UserQueryParam" >
	select
	<include refid="Base_Column_List" />
	from user_table
	where 1=1
	<if test="userId!=null and userId!='' ">
	AND (user_id = #{userId,jdbcType=VARCHAR} )
	</if>
	<if test="userName!=null and userName!='' ">
	AND (user_name = #{userName,jdbcType=VARCHAR} )
	</if>
</select>

<select id="queryUserScoreList" resultMap="UserScoreResultMap" parameterType="com.user.param.UserQueryParam" >
	select
	subject, score ,user_id
	from user_score_table
</select>

</mapper>

Mapper.java

public interface UserReaderMapper extends BaseReaderMapper{

    List<UserPojo> queryUserList(UserQueryParam param);
}



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值