现在,我想更新我的批量数据,但是当我按如下方式运行控制台时:
--- ibatis-config / emptyForIbatisParse_sqlmap.xml中发生错误 ---准备执行的映射语句时发生错误 ---检查VehQuaCer.updateAmtBal ---原因:java.sql.SQLException:参数对象类型无效。预期' java.util.List'但发现了 ' app.creditapp.lam.entity.VehQuaCer'。嵌套异常是 com.ibatis.common.jdbc.exception.NestedSQLException:
---错误发生在ibatis-config / emptyForIbatisParse_sqlmap.xml中 ---准备执行的映射语句时发生错误 ---检查VehQuaCer.updateAmtBal ---原因:java.sql.SQLException:参数对象类型无效。预期' java.util.List'但发现了 ' app.creditapp.lam.entity.VehQuaCer'
我的DaoImpl方法如下:
public void updateRelease(final List<VehQuaCer> list) throws DAOException {
try{
if(list!=null){
this.getSqlMapClientTemplate().execute(new SqlMapClientCallback(){
public Object doInSqlMapClient(SqlMapExecutor executor)throws SQLException{
executor.startBatch();
for(int i=0,j=list.size();i<j;i++){
executor.update("VehQuaCer.updateAmtBal",(VehQuaCer)list.get(i));
}
executor.executeBatch();
return null;
}
});
}
}catch(Exception e){
log.error(e);
throw new DAOException(e.getMessage());
}
}
我的ibatis如下:
<update id="VehQuaCer.updateAmtBal" parameterClass="java.util.List">
begin
<iterate conjunction="">
UPDATE VEH_QUA_CER SET REPAY_BAL=#[].repayBal#,SEC_BAL=#[].secBal#,ADV_BAL=#[].advBal#,RELEASE_APP_NO=#[].releaseApp# WHERE ID=#[].id#
</iterate>
end;
</update>
答案 0 :(得分:0)
从您提供的代码看来,您的查询似乎期望参数为List,但是因为在您的DAOImpl中,如果您已经遍历列表并仅传递&#309; VehQuaCer&#39;对象,所以将paramterclass更改为具有完全yqualified名称的VehQuaCer应该有效。