struts+spring+ibatis调用存储过程,要怎么调?

解决方案 »

  1.   

    你用的ibatis是什么版本的,我记得较低版本的不支持
      

  2.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
    <sqlMap namespace="PROCEDURE"><!--
    - =======================================================
    - 授权用户某个设备得权限
    - =======================================================
    -->
    <parameterMap class="map" id="proPermissionDevicePerson">
       <parameter property="deviceId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
       <parameter property="deviceType" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
       <parameter property="permissionType" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
       <parameter property="userId" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/>
       <parameter property="result" jdbcType="VARCHAR" javaType="java.lang.String" mode="OUT"/>
    </parameterMap><procedure id="shareDeviceToPerson" parameterMap="proPermissionDevicePerson">
       <![CDATA[
          {call share_dev_prv_to_person (?,?,?,?,?)}
       ]]>
    </procedure>
    </sqlMap>
    JAVA调用实现PermissionDAOIbatisImpl.java如下:// 授权设备给用户
    public static final String SHARE_DEVICE_TO_PERSON = "PROCEDURE.shareDeviceToPerson";
    public boolean shareDeviceToPerson(UserPermission userPermission) {
    Map map = new HashMap();
    boolean flag = false;
    map.put("deviceId", userPermission.getDeviceId());
    map.put("deviceType", userPermission.getDeviceType());
    map.put("userId", userPermission.getUserId());
    map.put("permissionType", userPermission.getPermissionType());
    try {
       getSqlMapClientTemplate().insert(SHARE_DEVICE_TO_PERSON, map);
       String result = (String) map.get("result");
       //得到返回值
       if (StringUtil.isNotBlank(result) && "2".equalsIgnoreCase(result)) {
        flag = true;
       }
    } catch (Exception e) {
       throw new DaoException("DAOException: " + e);
    }
    return flag;
    }
      

  3.   

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