问题描述
我现在的做的项目是struts2+spring2.0+ibatis的,以前一直用Hibernate,对ibatis不熟。现在要频繁的调用一批存储过程。我有个问题,不理解。struts2+spring2.0+ibatis的系统,可以配置了既可以用ibatis又可以用jdbc吗我发觉jdbc调用存储过程比较简单,但是如果是在现有系统中不用spring的事务管理,自己在代码里写个链接jdbc的代码,很多存储过程要频繁打开,关闭连接,性能肯定不行。所以想问问,有什么方法,比如,ibatis直接调用jdbc的方法来调用存储过程,或者在现在的系统架构里spring事务管理既支持ibatis又支持jdbc?
解决方案
解决方案二:
ibatis调用存储过程也很简单,你百度一下很多
解决方案三:
给你个例子吧,应该符合你的要求。publicclassBusStatusDAOImplextendsSqlMapClientDaoSupportimplementsBusStatusDAO{publicbooleansaveBusStatusInfo(BusStatusInfobusStatusInfo){booleanb=false;if(null!=busStatusInfo){Connectionconn=null;CallableStatementstmt=null;try{conn=this.getDataSource().getConnection();stmt=conn.prepareCall("{callGBOS_CACHE.ADD_BUS_BASE_INFO(?,?,?,?,?,?,?,?,?,?)}");stmt.setInt(1,busStatusInfo.getBusID());//busidstmt.setString(2,busStatusInfo.getTerminalID());//terminalIDstmt.setInt(3,busStatusInfo.getPreEngineRunTime());//pre_engine_timestmt.setFloat(4,busStatusInfo.getPreOilCost());//pre_oil_coststmt.setFloat(5,busStatusInfo.getPreMileage());//pre_mileagestmt.setInt(6,busStatusInfo.getCurrentStartEngineRunTime());//start_engine_timestmt.setFloat(7,busStatusInfo.getCurrentStartOilCost());//start_oil_coststmt.setFloat(8,busStatusInfo.getCurrentStartMileage());//start_mileagestmt.setInt(9,busStatusInfo.getVehicleKeyValue());//vehicle_key_valuestmt.setInt(10,busStatusInfo.getGearNum());//gear_numstmt.execute();if(stmt.getUpdateCount()>0){b=true;}}catch(Exceptione){log.error("saveBusStatusInfo"+e);}finally{if(stmt!=null)try{stmt.close();}catch(SQLExceptione){}if(conn!=null)try{conn.close();}catch(SQLExceptione){}}}returnb;}}