分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
ibatis中动态查询表返回用resultClass="java.util.HashMap" 的问题
悬赏:5 发布时间:2008-07-29 提问人:樊宝最帅 (初级程序员)
用spring+ibatis写了一个登陆页面输入表名 然后在页面查询出表的数据,
sql配置文件
</select>
<select id="getTableDataByPage" resultClass="java.util.HashMap" parameterClass="java.util.HashMap">
<![CDATA[
select * from (select rownum id,t.* from
$tableName$ t where rownum<= #endNum# ) b where b.id>= #startNum#
]]>
</select>
第一次运行服务器输入一个表名可以查询出表的所有信息,退出返回到登陆页面重新输入一个表名查询就会出错
日志显示:
Cause: java.sql.SQLException: 列名无效
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/zf/querytest/bo/impl/tableDao.xml.
--- The error occurred while applying a result map.
--- Check the tableDao.getTableDataByPage-AutoResultMap.
--- Check the result mapping for the 'TASKID' property.
其中TASKID为上一张表中的字段,也就是ResultMap中保留了上个表的字段信息,将sqlMapClient中的cacheModelsEnabled设置为"false"也不行
请问我要怎样修改才能在重新输入表名后查询后返回新的表的结果了,请大家帮帮忙,谢谢
问题补充:
感谢lggege的关注,目前只能重新启动才能重新查询另一张表的数据
sql配置文件
</select>
<select id="getTableDataByPage" resultClass="java.util.HashMap" parameterClass="java.util.HashMap">
<![CDATA[
select * from (select rownum id,t.* from
$tableName$ t where rownum<= #endNum# ) b where b.id>= #startNum#
]]>
</select>
第一次运行服务器输入一个表名可以查询出表的所有信息,退出返回到登陆页面重新输入一个表名查询就会出错
日志显示:
Cause: java.sql.SQLException: 列名无效
com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in com/zf/querytest/bo/impl/tableDao.xml.
--- The error occurred while applying a result map.
--- Check the tableDao.getTableDataByPage-AutoResultMap.
--- Check the result mapping for the 'TASKID' property.
其中TASKID为上一张表中的字段,也就是ResultMap中保留了上个表的字段信息,将sqlMapClient中的cacheModelsEnabled设置为"false"也不行
请问我要怎样修改才能在重新输入表名后查询后返回新的表的结果了,请大家帮帮忙,谢谢
问题补充:
感谢lggege的关注,目前只能重新启动才能重新查询另一张表的数据
采纳的答案
2008-08-05 hetylei (初级程序员)
- </select>
- <select id="getTableDataByPage" resultClass="java.util.HashMap" parameterClass="java.util.HashMap" remapResults="true">
- <![CDATA[
- select * from (select rownum id,t.* from
- $tableName$ t where rownum<= #endNum# ) b where b.id>= #startNum#
- ]]>
- </select>
提问者对于答案的评价:
好的 经测试解决了,原来有remapResults这个属性,谢谢你的帮助
其他回答
这是我的测试代码:
- <select id="getTableData" resultClass="java.util.HashMap" parameterClass="java.lang.String">
- <![CDATA[
- SELECT * FROM $tableName$
- ]]>
- </select>
- public Map<String, Object> getTableData(String tableName) {
- return this.getSqlMapClientTemplate().queryForMap("getTableData", tableName, "tableName");
- }
- public void testGetTableData() {
- Map<String, Object> values1 =