本文主要是介绍关于ibatis 的使用 queryForObject,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近做项目,用到ibatis ,,
不要问我,为什么,因为我们项目经理要求的 ssi框架 不能用 注解
在使用过程中 遇到一些问题,在这里解决一下:
当我在一个xml的文件 用一个外键 获取另外一个值的时候 发生了这个
The error occurred in com/***/mapper/*******_SqlMap.xml.
--- The error occurred while preparing the mapped statement for execution.
--- Check the *************.selectByPrimaryKey.
--- Cause: java.sql.SQLException: Invalid parameter object type. Expected 'com.**.nun.**' but found 'java.math.BigDecimal'.
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:185)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryForObject(GeneralStatement.java:104)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:566)
at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForObject(SqlMapExecutorDelegate.java:541)
at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForObject(SqlMapSessionImpl.java:106)
at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForObject(SqlMapClientImpl.java:83)
at com.ibatis.sqlmap.engine.mapping.result.loader.ResultLoader.getResult(ResultLoader.java:77)
at com.ibatis.sqlmap.engine.mapping.result.loader.EnhancedLazyResultLoader$EnhancedLazyResultLoaderImpl.loadObject(EnhancedLazyResultLoader.java:130)
... 9 more
Caused by: java.sql.SQLException: Invalid parameter object type. Expected 'com.**.nun.**' but found 'java.math.BigDecimal'.
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.validateParameter(GeneralStatement.java:229)
at com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQueryWithCallback(GeneralStatement.java:151)
... 16 more
猜测一点 :ibatis queryForPbject("selectById",id);
传过去是的int 值,但是在后面操作中,ibatis 其实将其转化为一个 对象,在进行了操作
<select id="selectById" resultMap="aaResultMap" parameterClass="com.**.nun.**" >
select
<include refid="***.***_Column_List" />
from*******
where ID = #id#
</select>
当在另外一个 xml文件中调用时
<result column="**ID" property="*id" jdbcType="DECIMAL" select="******.selectById" />
不能实现会上面的错
所以 以后还是用mybaties 吧,不要给自己挖坑了,谨此警示一下大家
这篇关于关于ibatis 的使用 queryForObject的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!