3
回答
使用mybatis3.2.2可以正常使用, 但是使用mybatis3.2.3, 动态SQL查询就报错了.请问是不是不支持3.2.3啊?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

@miemiedev 你好,想跟你请教个问题:@miemiedev 你好,想跟你请教个问题:使用mybatis3.2.2可以正常使用, 但是使用mybatis3.2.3动态SQL查询就报错了., 换用3.2.3以上版本也不行.请问是不是不支持3.2.3及以上版本啊?

举报
EACDY
发帖于3年前 3回/1K+阅
共有3个答案 最后回答: 3年前

引用来自“miemiedev”的评论

按理说应该都是支持的,错误栈的内容方便看一下吗

http://code.taobao.org/svn/itmuch/

我把代码托管了. 目前用3.2.2一点问题都没有, 但是只要换3.2.3就报错了.



=============

严重: Servlet.service() for servlet [dispatcher] in context with path [/icms] threw exception [Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.reflect.UndeclaredThrowableException
### The error may exist in com/itmuch/icms/biz/test/persistence/AreaMapper.xml
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select * from (select                            id, name, numberCode, zipCode, parentId, priority, state, deliveryPay, del_flag               from f_area          WHERE  id = ?             and name like CONCAT('%','哈','%')) temp_order order by name DESC limit ?
### Cause: java.lang.reflect.UndeclaredThrowableException] with root cause
java.lang.ClassCastException: com.itmuch.icms.biz.test.vo.Condition cannot be cast to java.lang.Integer
at org.apache.ibatis.type.IntegerTypeHandler.setNonNullParameter(IntegerTypeHandler.java:26)
at org.apache.ibatis.type.BaseTypeHandler.setParameter(BaseTypeHandler.java:50)
at org.apache.ibatis.scripting.defaults.DefaultParameterHandler.setParameters(DefaultParameterHandler.java:81)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.parameterize(PreparedStatementHandler.java:80)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.parameterize(RoutingStatementHandler.java:61)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:74)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:59)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:267)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:137)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:96)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:77)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
at com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor$1.call(OffsetLimitInterceptor.java:87)
at com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor$1.call(OffsetLimitInterceptor.java:85)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor.call(OffsetLimitInterceptor.java:122)
at com.github.miemiedev.mybatis.paginator.OffsetLimitInterceptor.intercept(OffsetLimitInterceptor.java:85)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:60)
at com.sun.proxy.$Proxy43.query(Unknown Source)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:108)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355)
at com.sun.proxy.$Proxy29.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:202)
at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:117)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:63)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:52)
at com.sun.proxy.$Proxy30.selectByConPaged(Unknown Source)

--- 共有 1 条评论 ---
miemiedevjava.lang.ClassCastException: com.itmuch.icms.biz.test.vo.Condition cannot be cast to java.lang.Integer 3年前 回复

引用来自“miemiedev”的评论

按理说应该都是支持的,错误栈的内容方便看一下吗

例如这边我参数是vo, 但是用3.2.2一点问题没有; 改用3.2.3就会报错, 报的就是xxxvo can not cast  to java.lang.Integer

======

代码详见:http://code.taobao.org/p/itmuch/src/branches/itmuch/icms/branches/icms-biz/src/main/resources/com/itmuch/icms/content/persistence/ContentMapper.xml

--- 共有 4 条评论 ---
EACDY回复 @miemiedev : 参数搞成map,使用mybatis3.2.7测试, 就没有任何问题了. 但是用对象传参这也是mybatis的动态sql常用用法呀... 我的用法和这里是相同的:http://mybatis.github.io/mybatis-3/dynamic-sql.html 能否帮忙支持一下.. ​ 3年前 回复
miemiedev回复 @EACDY : 你把需要传递的参数搞成map往里传会有问题吗 3年前 回复
EACDY回复 @miemiedev : 什么意思啊? sql里面的参数都是从VO里面取的啊.. 那应该怎么写啊?可以给个简单示例吗? 3年前 回复
miemiedev你sql表达式里的参数和输入的参数不一样,写的明确一点就好了 3年前 回复
顶部