ibatis动态查找出错

问题描述

<select id="getByTypeIDs" resultMap="result"> SELECT DET_NAME FROM TYPE_DEATAIL <dynamic prepend="where"> <iterate property="detTypeId" open="(" close=")" conjunction="or"> DET_TYPE_ID=#detTypeId[]# </iterate> </dynamic> </select>public List getByTypeIDs(int detTypeId[])throws SQLException{return sqlMapper.queryForList("getByTypeIDs",detTypeId);} 2008-08-08 14:55:40,937 DEBUG [java.sql.Connection] - {conn-100000} Connection2008-08-08 14:55:40,937 DEBUG [com.ibatis.common.jdbc.SimpleDataSource] - Returned connection 1623405 to pool.at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:156)... 7 moreCaused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1at java.lang.String.substring(Unknown Source)at com.ibatis.common.beans.BaseProbe.getIndexedProperty(BaseProbe.java:50)... 15 more

解决方案

使用的是默认参数 记不太清怎么用了用<select id="getByTypeIDs" resultMap="result"> SELECT DET_NAME FROM TYPE_DEATAIL <dynamic prepend="where"> <iterate property="value" open="(" close=")" conjunction="or"> DET_TYPE_ID=#value[]# </iterate> </dynamic> </select> 或<select id="getByTypeIDs" resultMap="result"> SELECT DET_NAME FROM TYPE_DEATAIL <dynamic prepend="where"> <iterate property="" open="(" close=")" conjunction="or"> DET_TYPE_ID=#value[]# </iterate> </dynamic> </select> 试试
解决方案二:
你的detTypeId 肯定是传了一个空进去, 或者是空的数组进去.你要先判断是 isNotNull, 再判断isNotEmpty, 再使用iterator

时间: 2024-12-03 14:38:11

ibatis动态查找出错的相关文章

ibatis动态语句中的prepend

关于ibatis动态sql的prepend的属性,我们需要理解一下几点 select * from student <dynamic prepend="where">  <isNotNull property="id" prepend="and">   id = #id#  </isNotNull>  <isNotNull property="name" prepend="a

数据结构教程 第三十一课 动态查找表

教学目的: 掌握二叉排序树的实现方法 教学重点: 二叉排序树的实现 教学难点: 构造二叉排序树的方法 授课内容: 一.动态查找表的定义 动态查找表的特点是: 表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在其关键字等于key的记录,则查找成功返回,否则插入关键字等于key的记录.以政是动态查找表的定义: ADT DymanicSearchTable{ 数据对象D:D是具有相同特性的数据元素的集合.各个数据元素均含有类型相同,可唯一标识数据元素的关键字. 数据关系R:数据元素同属

调用其它公司已开发好的动态库出错

问题描述 代码如下:publicclasstestdll{static{System.loadLibrary("SiInterface");}publicnativestaticintINIT(StringResoult);publicnativestaticvoidset(inti);publicstaticvoidmain(String[]args){testdlltest=newtestdll();StringInit_Resoult="";intinit_f

转:ibatis动态sql

直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的字符串连接.对于这个问题,Ibatis提供了一套标准的相对比较清晰的方法来解决一个问题,这里有个简单的例子:     <select id="getUserList" resultMap="user">          select * from user            

Ibatis动态(dynamic)查询

Ibatis的动态查询使得数据操作变得非常的灵活,下次举出了常用的动态查询的属性信息: Ibatis配置信息 Xml代码   <!-- Dynamic Sql -->     <typeAlias alias="Student" type="com.ibatis.Student" />       <typeAlias alias="StudentDTO" type="com.ibatis.Studen

模仿ibatis动态sql时,对于命名sql配置文件更改后,怎么及时知道或者监控配置文件发生变化,从而刷新我的缓存

问题描述 如果题目描述的不清楚可以看看我的思路,或者给我提一下建议,小弟不胜感激对ibatis不是很了解由于团队人员基础比较差想做一个类似ibatis的动态sql来查询结果集只用配置相应的sql,返回自己想要的结果集就OK了.此时遇到一个问题:开发时,比如说有不同的人员写了很多个配置文件,此时我是把配置文件在容器启动时,一起读到我的缓存中的.程序运行时,从缓存中拿数据.这就导致了一个问题,如果在容器启动时,更改并保存文件,这时候文件发生变化了,我此时我缓存还是拿的之前的数据.现在的解决办法是,每

使用ibatis插入时出错 求救

问题描述 解决方案二:Errorupdatingdatabase.Cause:org.apache.ibatis.executor.ExecutorException:TherewasnoTypeHandlerfoundforparametertagofstatementcom.taagoo.estension.we.insertPanoinfo解决方案三:Theerrormayinvolvecom.taagoo.estension.we.insertPanoinfo-Inline解决方案四:T

ibatis动态语句不同的写法

  所谓的不同写法当然原理一样,只不过我觉得第二种更加清晰和原生一些.   写法一:  <sql id="queryCondition">   <dynamic prepend="WHERE">    <isNotEmpty prepend="and" property="stuNum">     <![CDATA[  num= #stuNum# ]]>    </isNo

struts1+spring+ibatis框架整合出错

问题描述 org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'sqlMapClient'definedinServletContextresource[/WEB-INF/dataAccessContext.xml]:Invocationofinitmethodfailed;nestedexceptionisorg.springframework.core.NestedIOExcepti