ibatis配置问题

1.错误日志:     
--- The error occurred while applying a parameter map. 
--- Check the MS-EXTERFACE-MANAGE-SELECT-PARTNER-EXTERFACE-BY-ID-InlineParameterMap. 
--- Check the statement (query failed). 
--- Cause: java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1
Caused by: java.sql.SQLException: 索引中丢失  IN 或 OUT 参数:: 1
 解决方案:
   看到这个问题一头雾水,要查询的那张表中根本就没有增加索引?那到底是什么原因呢?不知道的情况下,那只有google一下了。
   查询了很多文章,造成该问题的有两个原因:
 (1)索引造成的  先查看有没有索引,在索引使用过程中有没有错误
 (2)参数类型    如索引无问题,检查传递的参数(sqlmapping中)与数据库类型是否一致。着重的看报错的参数,后边的1代码的就是sql中的第一个参数

 

2. 错误日志:
 --- Check the MS-EXTERFACE-MANAGE-UPDATE-STATUS-BY-ID. 
--- Check the parameter map. 
--- Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.NumberFormatException: For input string: ""
Caused by: java.lang.NumberFormatException: For input string: ""; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:  
--- The error occurred in com/ukulele/biz/dal/accinfo/dataobject/exterfaceManage-sqlmap-mapping.xml. 
--- The error occurred while preparing the mapped statement for execution. 
--- Check the MS-EXTERFACE-MANAGE-UPDATE-STATUS-BY-ID. 
--- Check the parameter map. 

       该问题困扰了我一天,先讲一下造成这个故障的原因,我要写一个更新数据状态的sql语我句,开始写的sql是单笔更新的,然后在一个循环中调用ibatis的DAO,把id一个个的传进来。写完了review代码的时候,想起来这还是DBA着重要求的sql不能写成这样子。(没有DBA的审核,你的代码是发布不了的。)其实自己还是想要求严格点。

    在网上查了一下资料,对于集合类型的数据在传递ibatis的sqlmapping中可以使用
     <iterate property="idList" open="(" close=")" conjunction=",">
       #idList[]#
    </iterate>
   那按照这个格式写了对应的ibatis就出现了上边的错误。
       看到这个错误那肯定是参数类型转化的时候出现的异常了,我发现我传递进来的是一个long类型的数据,那long类型数组中有空的值,单步调试发现传进来的不为空啊。    

       对比了系统中其他的写法,系统中传递的是list类型,我想难道系统模式是list类型才可以,换成了list类型,但是错误依旧。没有办法了还是google一下吧。
      发现了这边文章(http://wq163.javaeye.com/blog/103302)说是传递进来的参数在resultClass中找不到对应的属性,只要把propertyTyep参数删除掉,ibatis就会自动到properClass中招对应的类型,修改之后编译运行还是出现相同的错误。而且最后发现系统现有代码中是没有传递properClass参数的,ibatis能正常的解析。那是什么原因造成的呢 ?

       在调试了n久的代码之后,发现时ibatis在获取参数list类型的个数的时候报错,在把参数的个数转化成integer的时候异常,发现系统代码中传递的是ArrayList类型而不是List类型的变量,造成在构造sqlmaping的异常。

  

  最后总结的还是分析问题的方法,问题的解决自认为有三个阶段,
       问题的定位,包括原因的分析,可能原因的列举。
       问题的排除  对每种可能原因进行推测排除
       问题解决    使用最优的方案进行解决
     发现自己在前期定位问题的时候,问题都没有定位正确,实际问题可以调试跟踪找到最终的原因,自己没有找到根源就开始找原因了。当然失败了。以后分析原因还是要淡定,把问题确定清楚了,再进行排除解决。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值