最近有人问我为啥之前ibatis调用存储过程的时候要用update而不用queryForObject,一时忘记答不上来有点小尴尬,所以查询相关资料后记录一下==
spring + iBatis 调用 oracle /mysql存储过程
sqlmap 这样写
{call sf_tuition.handle_xg_reduce_tuition_multi(#reduceTutionIdsJoin#, #dealPerson#, #userName#)}
DAO 方法这样调 public class SfVwXgReduceTuitionDAOImpl extends SqlMapClientDaoSupport implements SfVwXgReduceTuitionDAO {
……
public void handleXgReduceTuition(String reduceTutionIdsJoin, String dealPerson, String userName) {
Map parameterMap = new HashMap();
parameterMap.put(“reduceTutionIdsJoin”, reduceTutionIdsJoin);
parameterMap.put(“dealPerson”, dealPerson);
parameterMap.put(“userName”, userName);
// 调用存储过程
getSqlMapClientTemplate().update(“SF_VW_XG_REDUCE_TUITION.handle_xg_reduce_tuition”, parameterMap);
}
}
进一步说明
以上是最简单的情况
getSqlMapClientTemplate().update 调用一个接收简单参数,无返回的存储过程。
getSqlMapClientTemplate().queryForObject(...) 需要返回单个参数以及一个 实体的情况
getSqlMapClientTemplate().queryForList(...)需要返回多个实体的情况