我现在的做的项目是 struts2+spring2.0+ibatis的,以前一直用Hibernate,对ibatis不熟。现在要频繁的调用一批存储过程。
我有个问题,不理解。struts2+spring2.0+ibatis的系统,可以配置了既可以用ibatis又可以用jdbc吗
我发觉jdbc调用存储过程比较简单,但是如果是在现有系统中不用spring的事务管理,自己在代码里写个链接jdbc的代码,很多存储过程要频繁打开,关闭连接,性能肯定不行。所以想问问,有什么方法,比如,ibatis直接调用jdbc的方法来调用存储过程,或者在现在的系统架构里spring事务管理既支持ibatis又支持jdbc?

解决方案 »

  1.   

    ibatis 调用存储过程也很简单,你百度一下很多
      

  2.   

    给你个例子吧,应该符合你的要求。public class BusStatusDAOImpl extends SqlMapClientDaoSupport implements BusStatusDAO{     public boolean saveBusStatusInfo(BusStatusInfo busStatusInfo) {
    boolean b = false;
    if(null != busStatusInfo){
    Connection conn = null;
    CallableStatement stmt = null;

    try{
    conn=this.getDataSource().getConnection();
    stmt = conn.prepareCall("{ call GBOS_CACHE.ADD_BUS_BASE_INFO(?,?,?,?,?, ?,?,?,?,?) }");
    stmt.setInt(1, busStatusInfo.getBusID());  //busid
    stmt.setString(2, busStatusInfo.getTerminalID());  //terminalID
    stmt.setInt(3, busStatusInfo.getPreEngineRunTime());  //pre_engine_time
    stmt.setFloat(4, busStatusInfo.getPreOilCost());    //pre_oil_cost
    stmt.setFloat(5, busStatusInfo.getPreMileage());    //pre_mileage
    stmt.setInt(6, busStatusInfo.getCurrentStartEngineRunTime());  //start_engine_time
    stmt.setFloat(7, busStatusInfo.getCurrentStartOilCost());    //start_oil_cost
    stmt.setFloat(8, busStatusInfo.getCurrentStartMileage());    //start_mileage
    stmt.setInt(9, busStatusInfo.getVehicleKeyValue());  //vehicle_key_value
    stmt.setInt(10, busStatusInfo.getGearNum());  //gear_num
    stmt.execute();
    if(stmt.getUpdateCount() > 0){
    b = true;
    }
    }catch(Exception e){
    log.error("saveBusStatusInfo " +e);
    }finally{
    if (stmt != null)
    try{
    stmt.close();
    } catch (SQLException e){
    }
    if (conn != null)
    try{
    conn.close();
    } catch (SQLException e){
    }
    }
    }
    return b;
    }
    }