开发过程中遇到问题:

1.项目开发过程中在xml配置文件中使用$tableName$时,报"列名无效"错误,后来经过查询,发现是ibatis缓存

了上一次查询的表结构的原因。解决办法:只需要在元素中添加  remapResults="true" 即可。

 <select id="select" resultClass="java.util.HashMap"  >
select * from $tableName$ where id=#id#
</select>

该查询结果映射到HashMap中,第一次使用这个语句是没有问题,但是当使用这个语句查询别的表时,报错为“列名无效”,

分析之后原因为ibatis对上个表的结构进行了映射缓存,从结果集到HashMap的映射时按照缓存中表字段进行装载。

使用remapResults这个属性,可以重新映射结果集

 <select id="select" resultClass="java.util.HashMap" remapResults="true"   >
select * from $tableName$ where id=#id#
</select>

2:在ibatis的配置文件中,经常会使用parameterClass="java.util.Map",这种用法是可以的,因为map是接口

是多态的典型用法,但是如果这样写resultClass="java.util.Map"就会报错,不能实例化对象,就是ibatis不能把

查询到的数据映射到map接口上,解决方法:修改成resultClass="java.util.HashMap"即可。

3:项目中遇到ibatis中parameterClass = "java.util.List" 时,那么sql语句拼接如下:

 <select id="selectSqlId"   parameterClass="java.util.List"  resultClass="java.util.HashMap">
SELECT *
FROM table_name
WHERE name IN
<iterate close=")" open="(" conjunction=",">
#[]#
</iterate>
</select>

4:isNull、isNotNull、isEmpty、isNotEmpty、isEquals

则几种判断元素在ibatis中用的很多,isNotNull和isNotEmpty用的比较多,

比如在select的where条件里,如果字段存在就拼接,不存在就不拼接

 <select id="selectSqlId" parameterClass="java.util.Map">
select * from tableName
where 1=1
<isNotNull prepend="AND" property="id">
id = #id#
</isNotNull>
<isNotNull prepend="AND" property="name">
name = #name#
</isNotNull>
</select>

就是如果id存在,就拼接上id这个查询条件,不存在就没有这个条件限制,name也是这样。

isNotEmpty的用法和isNotNull一样,只是稍微有一点区别,就是isNotEmpty包括空字符串和null

而isNotNull只包括null。

isNULL和isEmpty的用法相反。

isEquals:判断是否等于,等于的话就走这条分支,如下:

 <update id="updateSqlId" parameterClass="java.lang.String">
update table_name set update_date = sysdate
<isEquals prepend="," property="id1">
  id1=#value#
</isEquals>
<isEquals prepend="," property="id2">
  id2=#value#
</isEquals>
</update>

可以根据具体情况灵活应用。

ibatis返回结果映射到HashMap时,列名无效的问题的更多相关文章

  1. 【iBatis】使用resultMap配置返回结果时报错“列名无效”

    使用iBatis联查DEPT.EMP两张表时 采用如下结构 <resultMap id="find_departmentMap" class="com.dto.De ...

  2. LeetCode 706:设计哈希映射 Design HashMap

    题目: 不使用任何内建的哈希表库设计一个哈希映射 具体地说,你的设计应该包含以下的功能 put(key, value):向哈希映射中插入(键,值)的数值对.如果键对应的值已经存在,更新这个值. get ...

  3. iBatis查询时报"列名无效"或"找不到栏位名称"无列名的错误原因及解决方法

    iBatis会自动缓存每条查询语句的列名映射,对于动态查询字段或分页查询等queryForPage, queryForList,就可能产生"列名无效".rs.getObject(o ...

  4. ibatis返回map列表

    ibatis返回map列表 1. resultClass="java.util.HashMap"   <select id="queryCustmerCarNoBy ...

  5. [Swift]LeetCode706. 设计哈希映射 | Design HashMap

    Design a HashMap without using any built-in hash table libraries. To be specific, your design should ...

  6. 当我们创建HashMap时,底层到底做了什么?

    jdk1.7中的底层实现过程(底层基于数组+链表) 在我们new HashMap()时,底层创建了默认长度为16的一维数组Entry[ ] table.当我们调用map.put(key1,value1 ...

  7. IBatis.Net使用总结(二)-- IBatis返回DataTable/DataSet(网上例子的集合)

    IBatis返回DataTable,DataSet ibatis.net QueryForDataTable 完整的为ibatis.net 引入datatable支持要改动很多地方,所以描述的是最小化 ...

  8. Android:后台给button绑定onClick事件、当返回项目到手机页面时提示是否退出APP

    上一篇文章我们学习了android通过findViewById的方式查找控件,本章将了解button控件,及btton如何绑定控件. 通过android的ui设计工具设计一个登录页面: <Rel ...

  9. Win7共享问题 映射网盘时出现的错误 the specified server cannot perform the requested operation

    Win7共享问题 映射网盘时出现的错误:the specified server cannot perform the requested operation 解决方案: 1.重启电脑: 2.修改注册 ...

随机推荐

  1. Tomcat中配置JNDI数据源

    准备工作: Tomcat版本:tomcat6.0以上 下例中均使用MySQL数据库 将对应数据源的jar包和MySQL的驱动包拷贝至tomcat的lib文件夹下 一.全局数据源 1步骤一:配置 在to ...

  2. CodeForces 689E Mike and Geometry Problem (离散化+组合数)

    Mike and Geometry Problem 题目链接: http://acm.hust.edu.cn/vjudge/contest/121333#problem/I Description M ...

  3. jpa仓库接口

    可以使用的仓库接口有: Repository: 是 Spring Data的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法. CrudRepository: 继承Repos ...

  4. ios页面传值的几种方法

    1.属性2.方法3.代理方法4.SharedApplication5.NSUserdefault6.通过一个单例的class来传递 属性这种方法传值挺方便的,只需要拿到它的指针,如果重新声明一个指针, ...

  5. HDU 1010 Tempter of the Bone (DFS+剪枝)

    题意:从S走到D,能不能恰好用T时间. 析:这个题时间是恰好,并不是少于T,所以用DFS来做,然后要剪枝,不然会TEL,我们这样剪枝,假设我们在(x,y),终点是(ex,ey), 那么从(x, y)到 ...

  6. ASP防注入

    因为在改进公司的一套ASP代码,所以考虑了一下防注入的问题. 参考了网上的几处代码,进行了修改和整合,都转换成小写再处理. 还考虑了script注入. 代码如下: 'Asp防注入代码 SQL_injd ...

  7. web config数据库连接字符串加密

    ASP.NET web.config中,数据库连接字符串的加密与解密 ASP.NET web.config中,数据库连接字符串的加密与解密. 开始--->运行,输入cmd,接着输入以下内容 加密 ...

  8. status pending状态

    开发采用ssh,注解的方式,事物也application.xml配置了,但是在业务层没有使用@Transactional造成浏览器一直处于status pending状态,为什么没有使用@Transa ...

  9. win7硬盘安装Ubuntu12.04 64位时显示Error 15: File not found.

    安装Ubuntu12.04 -64位时,用EasyBCD建好引导文件重启电脑后出现如下错误: Error 15: File not found 原因一个是安装文件所在盘符不对,另一个是文件名.Ubun ...

  10. 节点文件将两个不同格式的XML文件,进行节点对照,并生成一个用于对照功能的XML

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 经常有的需求是,需要将一种格式的XML转换成另一种XML.如果要实现这个功能首先需要将两个不同XML手动建立节点对比关系.然后 ...