论坛首页 入门技术论坛

[提问]ibatis查询问题

浏览 3825 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-06-12  
<statement id="getpages" resultClass="java.util.HashMap" parameterClass="string">
   <![CDATA[
      $sqls$
   ]]>
  </statement>

如上配置,我每次传入不同的sql语句来查询数据,返回map,但是出现这样的问题:如果我第一次的sql语句是select RoleId,RoleName from Role,正确返回结果,第二次的是select ResId,ResName from Res,ibatis出错说,在map中找不到RoleId这个key,也就是说map的结构始终未第一次查询时产生的,接下来的查询都是用第一次的结构,请问这个问题怎么解决呢,
   发表时间:2007-06-12  
<statement id="getpages" resultClass="java.util.HashMap" parameterClass="string" remapResults="true">
<![CDATA[
$sqls$
]]>
</statement>

关于动态remapResults="true"的说明
如果你使用下面这种动态语句的时候,在第二次传入参数tableName或者resultMap参数不同的时候会
SQLException:Invaild column name 错误,因为IBatis有自己的AutoReusltMap的cache,他总是用上次的column去匹配表,
解决的方法就是使用多个statement或者设置remapResults="true" 就
是每次会自动重新映射

<select id="selectTable" parameterClass="map" resultMap="$resultMap$" >
Use $dbName$
SELECT
*
From
$tabileName$
</select>

http://wiki.springside.org.cn/display/springside/iBatis
0 请登录后投票
   发表时间:2007-06-12  
还第一次见到这么玩的
0 请登录后投票
   发表时间:2007-06-14  

ibatis 这样用,所有的 SQL 全到 dao 里去了,还不如 jdbcTemplate 来得简单
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics