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>

简单来张图说明一下;

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

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

记录一下,虽然简单。

时间: 2024-10-06 23:26:31

ibatis查询SQL语句返回一个对象,此对象包含一个List属性的相关文章

多条查询sql语句返回多表数据集

string sql = @"SELECT * FROM dbo.Group_Product WHERE ProductID='" + 67839 + "';SELECT * FROM dbo.Group_ProductPictures WHERE ProductID='" + 67839 + "';SELECT ProductID,ProductTitle,ProductName,SalePrice,ListingPrice,MainPicture,Sa

Entity Framework执行Sql语句返回DataTable

Entity Framework中对外开放了数据库连接字符串,使用的时候可以直接得到这个连接字符串,然后进行相关的操作.如果在使用的过程中,发现Entity Framework中有一些满足不了的需求的话,那么就可以用这个连接字符串,自己写ADO的代码,去数据库进行相关的操作.特别是对于一些复杂的查询,这时候,一般是想直接执行一个Sql语句,返回一个结果集.下面是一个方法,直接返回DataTable. /// <summary> /// EF SQL 语句返回 dataTable /// <

基本的查询sql语句

day03  基本的查询sql语句 一.概述: 学习MySQL数据库中一定要学会sql的查询功能,说白了,使用数据库就是存储数据,查询数据,使用这些数据的一个过程.只有查看了才知道我们是否存储成功,是否可以直接使用这些数据. 二.具体的sql 1.查询数据库的基本语法:         select 需要查询的字段名和内容         from  指定相关的表名         where  查询时所需要的条件         group by  如何对结果分组         order 

查询sql语句所花时间

--1:下面这种是SQL Server中比较简单的查询SQL语句执行时间方法,通过查询前的时间和查询后的时间差来计算的: declare @begin_date datetime declare @end_date datetime select @begin_date = getdate() <这里写上你的语句...> select @end_date = getdate() select datediff(ms,@begin_date,@end_date) as '用时/毫秒'   --2

多表查询sql语句

1 --解锁SCOTT用户 2 alter user scott account unlock 3 --检索指定的列 4 select job,ename,empno from emp; 5 --带有表达是的select子句 6 select sal*(1+0.2),sal from emp; 7 --显示不重复的记录 8 select distinct job from emp; 9 --比较筛选 <> = 10 select empno,ename,sal from emp where s

分页用到的子查询sql语句

说明(2017-8-31 23:30:22): 1. 分页用到的子查询sql语句 2. 记住的意思就是背过^_^ 3. 还有一个top语句,查一查

跨服务器查询sql语句样例(转)

若2个数据库在同一台机器上: insert into DataBase_A..Table1(col1,col2,col3----) select col11,col22,col33-- from DataBase_B..Table11 若不在同一台机器上,则是本文要讲的内容: ----------------------------------------------------------------------------------------- 跨服务器查询sql语句样例 INSERT

python连接SQLServer数据库,执行给定的查询SQL语句,并返回查询结果数据

import sys import pymssql reload(sys) sys.setdefaultencoding("utf-8") #数据库连接配置 config_dict={ 'user':'sa', 'password':'', 'host':'127.0.0.1', 'database':'pawn2007' } def SQLServer_connect(config_dict): ''' SQLServer 数据库连接 ''' connect=pymssql.conn

各种数据库分页查询sql语句大全

在显示记录条目时往往要用到分页,一种常用的办法是利用各种数据库自带的定位接口对原始查询语句进行改写,从而只取出特定范围的某些记录.不同的数据库,查询定位接口是不一样的,下面做一汇总: 数据库 分页查询语句 说明 MySQL    "QUERY_SQL limit ?,?"            使用limit关键字,第一个"?"是起始行号, 第二个"?"是返回条目数 Oracle SELECT * FROM ( SELECT A.*, ROWNU