mybatis 嵌套查询,一对多

本文介绍如何使用MyBatis实现嵌套查询,重点讲解了一对多查询场景下的配置方法,包括SQL映射文件中的collection元素用法及参数传递方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做项目时,需要用到mybaits 嵌套查询,什么意思呢,比如个人信息,中包含复杂对象地址,并且是一对多,我想查询个人信息
同时带出地址信息,
这个之前写过,但mybatis的语法老是忘记,今天写个博客,记录下,好记性不如烂笔头,先简单写一版本,晚上继续润色下。
一下是sqlmap 内容,这里做下解释:
<collection property="subChapter" column="{id=id,COURSE_ID=COURSE_ID}" select="selectSubChapter" />
这行表示需要嵌套查询的配置,javabean中的属性是: subChapter,并且是集合类型,
column="{id=id,COURSE_ID=COURSE_ID}"
这个是子查询传递的参数,这个例子是多参数传递,如果是单个参数可以
column="id",先写到这里。(单个参数不需要花括号)

如果返回的是单个对象,即一对一,应该这么写:
<association 
 property="subChapter" column="{id=id,COURSE_ID=COURSE_ID}" select="selectSubChapter" />
<!--以上是说明-->
 


<!--此处是代码mybatis 代码片段-->

<select id="searchTCourseChapterByParams" parameterType="map" resultMap="TCourseChapterMap"> SELECT <include refid="TCourseChapterBaseColumnSql"/> FROM t_course_chapter <include refid="TCourseChapterBaseWhereSql"/></select><select id="selectSubChapter" parameterType="map" resultMap="subChapterMap"> SELECT <include refid="TCourseChapterBaseColumnSql"/> FROM t_course_chapter WHERE COURSE_ID=#{COURSE_ID} and PARENT_ID=#{id}</select>

<resultMap type="cn.skillbridge.model.course.vo.TCourseChapterVo" id="TCourseChapterMap">
    <id column="ID" property="id"/>
    <result column="NAME" property="name"/>
    <result column="COURSE_ID" property="courseId"/>
    <result column="PARENT_ID" property="parentId"/>
    <result column="FREE" property="free"/>
    <result column="SERIAL" property="serial"/>
    <result column="VEDIO_CODE" property="vedioCode"/>
    <result column="DURATION" property="duration"/>
    <result column="CREATE_DATE" property="createDate"/>
    <result column="UPDATE_DATE" property="updateDate"/>
    <result column="C_USER_ID" property="CUserId"/>
    <result column="M_USER_ID" property="MUserId"/>
<!--
这行表示需要嵌套查询的配置,javabean中的属性是: subChapter,并且是集合类型,
--> <collection property="subChapter" column="{id=id,COURSE_ID=COURSE_ID}" select="selectSubChapter" />
</resultMap>
<resultMap type="TCourseChapter" id="subChapterMap">
<id
column="ID" property="id"/>
<result
column="NAME" property="name"/>
<result
column="COURSE_ID" property="courseId"/>
<result
column="PARENT_ID" property="parentId"/>
<result
column="FREE" property="free"/>
<result
column="SERIAL" property="serial"/>
<result
column="VEDIO_CODE" property="vedioCode"/>
<result
column="DURATION" property="duration"/>
<result
column="CREATE_DATE" property="createDate"/>
<result
column="UPDATE_DATE" property="updateDate"/>
<result
column="C_USER_ID" property="CUserId"/>
<result
column="M_USER_ID" property="MUserId"/>
</resultMap>


书面排版比较乱,见谅,哈哈哈。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值