ibatis查询SQL语句返回一个对象,此对象包含一个List属性

Posted 一个人的北京S

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ibatis查询SQL语句返回一个对象,此对象包含一个List属性相关的知识,希望对你有一定的参考价值。

可能标题说的不是很明白,具体其实就是:

我需要查询一个用户,但是这个用户拥有多张试卷,所以我将试卷这个对象,作为User对象的一个属性,这个属性为List类型。这样我在SQL查询时直接查询user表返回user对象,此user对象包含一个属性(List<Test>多张试卷)。

java实体类对应关系:

public class Test{
    
    private Integer userID;           // 主键ID
    private String username;          // 姓名
    private String idCard;            // 身份证号
    private Integer sex;              //性别
    private String mobilePhone;       // 手机号
    
    private List<Test> propertyList;  //List属性
}

ibatis对应XML文件查询代码:

    <resultMap id="List_result" class="com.ceshi.user.domain.User">
        <result property="userID" column="userID"/>
        <result property="idCard" column="idCard"/>
        <result property="username" column="username"/>
        <result property="mobilePhone" column="mobilePhone"/>
        <result property="propertyList" column="{userID=userID}" select="getpropertyList"/>
        
    </resultMap>
    <select id="getpropertyList" parameterClass="HashMap" resultClass="com.ceshi.user.domain.User">
        SELECT userID ,paperName,
        GROUP_CONCAT(courseRecomm SEPARATOR \',\') courseRecomm
        FROM test
        WHERE userID = #userID#
        GROUP BY userID,paperName
    </select>
    <select id="getList" parameterClass="com.ceshi.user.domain.User" resultMap="List_result">
        SELECT 
          a.userID,
          a.idCard,
          a.username,
          CASE
            a.sex 
            WHEN \'1\' 
            THEN \'女\' 
            ELSE \'男\' 
          END AS sexName,
          a.mobilePhone,
        FROM user a         
          <dynamic prepend="WHERE">
            <isNotNull prepend="AND" property="userID"> a.userID=#userID# </isNotNull>
            <isNotNull prepend="AND " property="username"> a.username like\'%$username$%\'</isNotNull>
            <isNotNull prepend="AND" property="idCard"> a.idCard=#idCard# </isNotNull>
        </dynamic>
         ORDER BY a.userID DESC
    </select>

简单来张图说明一下;

查问卷表拼接用户结果是这样的:同一个人对应多张试卷,查询试卷表结果。

但是我只想查用户表,也返回用户对应的试卷,也就是这样:

记录一下,虽然简单。

以上是关于ibatis查询SQL语句返回一个对象,此对象包含一个List属性的主要内容,如果未能解决你的问题,请参考以下文章

如何生成ibatis 动态sql

Spring与Ibatis整合入门

在DAO的查询操作里,数据库查询到记录,sql语句也成功执行,但是返回的对象是null

使用ibatis进行查询,我想查询一个字段有多个值得时候的结果,sql语句是这样的

ibatis insert 返回值为啥为1

iBatis框架使用 4步曲