我的项目是ibatis+struts2+spring,项目在部署测试环境时,发现CUP占用很快达到100%。根据项目中的开发情况,将问题定位在几个定时执行的任务上面。一个个排除,最终找到了问题所在。
出问题了的程序在执行中调用了一个存储过程,该存储过程有两个返回参数具体程序如下:
1>ibatis配置文件:
<parameterMap id="backAwardMap" class="java.util.HashMap">
<parameter property="resultValue" mode="OUT" jdbcType="VARCHAR" javaType="java.lang.String"/>
<parameter property="v_errmsg" mode="OUT" jdbcType="VARCHAR" javaType="java.lang.String"/>
</parameterMap>
<procedure id="callBackAward" parameterMap="backAwardMap">
{call pro_lottery_backaward(?,?)}
</procedure>
</sqlMap>
2>dao:
public void executeBackAward(Map map) {
getSqlMapClientTemplate().queryForObject("callBackAward",map);
}
进过对比,发现这个存储过程的调用有所不同,使用了queryForObject方法,原意是该执行不需要控制事务。不必调用insert或者update方法。将上述调用修改成:
public void executeBackAward(Map map) {
getSqlMapClientTemplate().update("callBackAward",map);
}
部署后,运行一天再也没有出现CUP被过高占用的情况。到此问题得到解决。
分享到:
相关推荐
Ibatis中调用其它的SQL语句很容易,那么如何在Ibatis中调用存储过程呢?
IBATIS调用存储过程
NULL 博文链接:https://jun1986.iteye.com/blog/1290064
ibatis调用存储过程使用示例,处理带参数及无参数类型的存储过程,是一个不错的例子。
用ibatis调用存储过程的介绍,使用java语言进行开发
iBatis调用存储过程
ibatis调存储过程返回游标,资料整理
ibatis调用oracle存储过程分页
ibatis调用存储过程.txt [removed] var share_info = {}; [removed]
ibatis调用oracle存储过程
ibatis与存储过程(带输出参数的应用)
Ibatis调用Oracle存储过程,返回自定义的类型。
基于SQLserver 数据库的IBatis中存储过程应用实例
NULL 博文链接:https://pzh244658240.iteye.com/blog/1423681
ibatis +mssql 执行增、删、改、查 +存储过程 最佳运行环境 MyEclipse6.0+jdk1.6
ibatis批量存储
Struts2-spring-ibatis 整合及存储过程分页.
ibatis调用oracle的函数,存储过程的方法,从网上收集的,还没有整理。
ibatis学习 ibatis总结 ibatis ibatis ibatis