java - Ibatis 获取 hashmap 的集合

标签 java ibatis

我正在使用 IBATIS 2.0,因为这是我得到的。 我试图让我的应用程序读取 HashMap 集合,但它给了我:

Exception: java.lang.ClassCastException: java.util.HashMap cannot be cast to java.util.Collection 

这是我的结果图:

<resultMap id="personnelDtlHM" class="java.util.HashMap">
<result property="idNo" column="ID"/>
<result property="fullName" column="FULL_NAME"/>
<result property="dteBirth" column="DTE_BIRTH"/>
<result property="addr" column="ADDR"/>
<result property="homeTelNo" column="HOME_TEL_NO"/>
<result property="mobileNo" column="HANDPHONE_NO"/>
<result property="emailAddr" column="EMAIL_ADDR"/>
</resultMap>

这是我的查询:

<select id="getMultiplePersInfo" resultMap="personnelDtlHM" parameterClass="list">
SELECT
  P.ID,
  P.FULL_NAME,
  P.DTE_BIRTH,
  P.ADDR,
  P.HOME_TEL_NO,
  P.HANDPHONE_NO,
  P.EMAIL_ADDR
  FROM
  PERS_TABLE P
  WHERE
  P.ID IN
  <iterate open="(" close=")" conjunction=",">
  #[]#
  </iterate>
</select>

这是我的java代码:

List<String> tmpNRICs = new ArrayList<String>();
if (records != null && records.size() > 0) {
String tempId = "A1234567D";
    tmpIDs.add(tempId);
}

Collection<HashMap> returnMapRecords = null;
SqlMapClient sqlMap = null;
String idList = "";
returnMapRecords = (Collection<HashMap>) sqlMap.queryForObject("getMultiplePersInfo", tmpIDs);

System.out.println(returnMapRecords.size());

结果读取正确, HashMap 映射正确,但我没有获取数据的行和行。 当我在 tmpIDs 中使用超过 1 个 ID 号进行测试时,收到错误:

java.sql.SQLException: Error: executeQueryForObject returned too many results.

我想知道这是否是一个非常基本的事情,因为我不相信如此强大的数据映射器不具备映射多行的能力。然而,我无法找到任何答案,或者无法理解我所发现的东西。

我正在尝试检索数据库中已有的数据行,如下所示:

ID       | FULL_NAME | DTE_BIRTH | ADDR | HOME_TEL_NO | HANDPHONE_NO | EMAIL_ADDR
A1234567D|  TESTNAME | 12-12-2000| TEST | 1233465     | 12345678     | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dfabbaacab9fbcb0b2f1bcb0b2" rel="noreferrer noopener nofollow">[email protected]</a>
A2234567D| TESTNAME2 | 12-12-1999| TEST | 1234567     | 12345678     | <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="1662736562245675797b3875797b" rel="noreferrer noopener nofollow">[email protected]</a>
etc.

预先感谢您的任何帮助和建议。

最佳答案

Nvm 我明白了。

应该使用sqlMap.queryForList()而不是sqlMap.QueryForObject()

关于java - Ibatis 获取 hashmap 的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25503013/

相关文章:

java - 如何断言数据库连接在事务中?

java - 如何使用 iBatis

java - Android Studio 模拟器无法启动内存限制相关的错误消息

java - MarkLogic:将 Map-Object 从 Java 传递到 XQuery

java - 如何在 spring.xml 配置文件中将 SqlMapClientFactoryBean 连接到数据源

java - 如何使用 Mybatis 插入 java List<String>?

java - 递归方法打印 4 次

java - WebSphere MQ JMS 连接发生错误

java - JOGL绘制VBO黑屏

Ibatis/MyBatis动态选择,无需创建任何Pojo/Mapper