java ibatis 返回List<HashMap<String,String>> 的数据读取问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java ibatis 返回List<HashMap<String,String>> 的数据读取问题相关的知识,希望对你有一定的参考价值。

我SQL查询直接返回List<HashMap<String,String>> result
代码如下:
public ArrayList<HashMap<String, String>> selectToMap()
return (ArrayList<HashMap<String,String>>)getSqlMapClientTemplate()
.queryForList("advertising.selectToMap");

result是返回的数据集(读取的result里面有值)
在数据库中两个字段 id ,name
id 是 Integer
name 是 varchar
但是然后我读取时
for(HashMap<String,String> item:result)
System.out.println(item.get("id")); //id是字符名id字段是int所以这样输出就出错,提示不能把整型转化成Stirng
System.out.println(item.get("name")); //这样就不会出错,因为name字段在数据库里是varchar类型.

我想问的是HashMap 不是已经指出键和值都是String了吗?为什么还提示无法转换??
别外我如何读取键为id 的值????

参考技术A result类型换成List<HashMap<String, Object>>试试呢追问

改成Object 然后item.get("id").toString() 这样就可以了,谢谢

本回答被提问者采纳

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>

简单来张图说明一下;

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

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

记录一下,虽然简单。

以上是关于java ibatis 返回List<HashMap<String,String>> 的数据读取问题的主要内容,如果未能解决你的问题,请参考以下文章

dtree这么从ibatis中取List集合

mybatis resulttype如何获取List<Object[]>?

ibatis mybatis传入List参数

ibatis 批量update操作

ibatis批量插入怎么做

java如何得到一个方法返回的list