在使用ibatis2.0的时候,报错如下
Cause: com.ibatis.common.beans.ProbeException: Error getting ordinal list from JavaBean. Cause java.lang.NumberFormatException: For input string: “”
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:204)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryForList(MappedStatement.java:139)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:567)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSessionImpl.java:118)
at org.springframework.orm.ibatis.SqlMapClientTemplate$3.doInSqlMapClient(SqlMapClientTemplate.java:298)
at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:209)
犯了一个很低级的错误,把需要转义的xml写进了<![CDATA[ … ]],导致转义的xml直接原样写进了sql
正确的写法应该是:
<select id="queryUserInfo" parameterClass="com.xxx.User" resultClass="com.xxx.User">
<![CDATA[
select a.user_id userId,······
from user a
where a.month = #month#]]>
<dynamic prepend="AND">
<isNotEmpty property="msisdn">
a.msisdn = #msisdn#
</isNotEmpty>
<isNotEmpty prepend="AND" property="userId">
a.user_id in
<iterate open="(" close=")" conjunction="," property="userId">
#userId[]#
</iterate>
</isNotEmpty>
</dynamic>
</select>