遇到问题:

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

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

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

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

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

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

1 <select id="select" resultClass="java.util.HashMap" remapResults="true"   >
2         select * from $tableName$ where id=#id#
3 </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语句拼接如下:

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

4:isNull、isNotNull、isEmpty、isNotEmpty、isEquals

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

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

 1 <select id="selectSqlId" parameterClass="java.util.Map">
 2     select * from tableName
 3     where 1=1
 4     <isNotNull prepend="AND" property="id">
 5         id = #id#
 6 </isNotNull>
 7     <isNotNull prepend="AND" property="name">
 8         name = #name#
 9 </isNotNull>
10 </select>

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

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

而isNotNull只包括null。

isNULL和isEmpty的用法相反。

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

1 <update id="updateSqlId" parameterClass="java.lang.String">
2     update table_name set update_date = sysdate
3     <isEquals prepend="," property="id1">
4       id1=#value#
5     </isEquals>
6     <isEquals prepend="," property="id2">
7       id2=#value#
8     </isEquals>
9 </update>

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

转载于:https://www.cnblogs.com/warrior4236/p/6055748.html

ibatis返回结果映射到HashMap时,列名无效的问题相关推荐

  1. iBatis数据库字段映射到Java对象。

    数据库执行完SQL后会返回执行结果,iBatis如何将查询出来的记录设置到account对象中呢? 和ParameterMap类似,填充返回信息需要的资源都已经包含在ResultMap中.当有了保存返 ...

  2. [ibatis]列名无效问题处理

    问题场景: 使用了ibatis的查询功能,点击查询后一直报列名无效的问题,但是将日志中打印出来的sql在pl/sql里面执行没有报错.检查了ibatis的sql管理文件,列名没有写错的情况,参数传递也 ...

  3. IbatiS关联字段映射

    IbatiS的一个小功能. 在编写resultMap的时候,如果自己定义了一个数据库中并不对应的字段,比如是关联其他表的字段.则可以这样实现: <result property="ty ...

  4. ibatis 列名无效

    项目中使用到ibatis动态SQL,如下 <select id="findResources" parameterClass="String" resul ...

  5. Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)返回非映射实体类的解决方法

    Spring JdbcTemplate的queryForList(String sql , Class elementType)返回非映射实体类的解决方法 参考文章: (1)Spring JdbcTe ...

  6. 【软件开发底层知识修炼】二十五 ABI之函数调用约定二之函数返回值为结构体时的约定

    上一篇文章学习了几种函数调用约定的区别,点击链接查看上一篇文章:[软件开发底层知识修炼]二十四 ABI之函数调用约定 本篇文章继续学习函数调用约定中,关于函数返回值的问题.当函数返回值为结构体时,函数 ...

  7. (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题

    (配置消息转换器)解决后台返回json数据到前台时页面时中文显示乱码问题 SpringMVC.xml中加 <!-- 配置消息转换器(解决中文乱码问题)--><mvc:annotati ...

  8. win10服务器返回为空,CAD出现错误: ActiveX 服务器返回错误: 加载类型库/DLL 时出错...

    装精简版的autocad2012,运行有些vlisp命令时,出现"错误: ActiveX 服务器返回错误: 加载类型库/DLL 时出错"的提示,无法进行下去,以为是新版本CAD不支 ...

  9. JAVA列名无效解决方案,Java-请各位大神指教,我在用MyBatis Generator进行逆向工程时,报“列名无效”错误。...

    错误代码如下,请各位大神指点指点,小弟不胜感激: Exception in thread "main" java.sql.SQLException: 列名无效 at oracle. ...

最新文章

  1. Javascript+PHP实现在线拍照功能 (转)
  2. 如何为linux 桌面文件内存,linux - 桌面Linux发行版中.desktop文件的功能是什么? - 堆栈内存溢出...
  3. (纯干货)万字长文,数据分析利器 pandas 全教程
  4. 验证网站地址是否有效
  5. Docker容器内部署Java微服务的内存限制问题
  6. 怎么判断前轮左右的位置_汽车上主要传感器的安装位置,你知道多少?
  7. JAVASCRIPT发展历程
  8. delete表1条件是另一个表中的数据,多表连接删除
  9. Python风格总结:日期操作
  10. NTFS不利的一面——ADS流文件
  11. 1111---9999的变换
  12. 基线管理之Windows安全配置
  13. mysql如何创建用户代码_Mysql 创建用户 受权_mysql
  14. 优化函数 (Optimization Function)
  15. str中的join方法,fromkeys(),set集合,深浅拷贝(重点)
  16. 第四届高教杯计算机绘图教程,第三届“高教杯”机械类计算机绘图试卷(三维).pdf...
  17. 实验三:Windows7操作系统安全
  18. 缺点 霍夫圆_霍夫圆变换
  19. 甲骨文要回收闲置实例,如何应对
  20. 计算机网络(自顶向下方法)-Internet概述

热门文章

  1. 大家可以在十分钟内入睡吗?有什么快速入睡的方法吗?
  2. 如何应对倒戈的员工?
  3. 如何给一家公司做定性研究?
  4. Currently, the Linux Mint team has 21 members
  5. org.apache.maven.plugins:maven-resources-plugin:2.4.3
  6. IDEA的创建javaWeb工程以及修改默认的class文件输出
  7. windows部署tomcat服务自动启动,同时解决服务无法启动的问题
  8. 从git上clone项目到IDEA
  9. css实现图片虚化_什么? CSS 阴影竟然还有这种骚操作 ?
  10. 新SQL Server 2016示例数据库