最近在做项目时,需要用到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>
书面排版比较乱,见谅,哈哈哈。。。