MyBatis调用oracle存储过程

逃离我推掉我的手 2022-01-12 09:51 495阅读 0赞

前言

  • 存储过程书写要规范(IN 、OUT 参数一定要写上,例如:v_siteNo IN VARCHAR2),不然JAVA调用有问题,拿不到存储过程返回值

存储过程ONE

  1. create or replace procedure P_GetToken(v_siteNo IN VARCHAR2,
  2. tv OUT varchar2) IS

MyBatis代码

  1. <select id="getSerialCodeBySiteCode" parameterType="Map" statementType="CALLABLE" >
  2. {call P_GetToken(
  3. #{v_siteNo,jdbcType=VARCHAR,mode=IN},#{tv,mode=OUT,jdbcType=VARCHAR}
  4. )}
  5. </select>

后台代码

  • ServiceImp实现类获取存储过程返回值

    @Override
    public String getSerialCodeBySiteCode(String siteCode){

    1. Map<String,String> map = new HashMap();
    2. map.put("v_siteNo",siteCode);
    3. customerMainDao.getSerialCodeBySiteCode(map);
    4. return map.get("tv");

    }

存储过程TWO

  1. CREATE OR REPLACE PROCEDURE P_USERINFOLIST(BEGINDATE IN VARCHAR2, --格式yyyy-mm-dd hh24:mi:ss
  2. ENDDATE IN VARCHAR2,
  3. SITENAME IN VARCHAR2,
  4. EMPNO IN VARCHAR2,
  5. scanType in varchar2,
  6. RF OUT SYS_REFCURSOR) IS

MyBatis代码

  1. <resultMap type="CourierInfo" id="CourierInfoMap">
  2. <result column="RECEIVEINFO" property="consigneeName"/>
  3. <result column="BILLCODE" property="billCode"/>
  4. <result column="SCANTIME" property="expCabinetTime"/>
  5. <result column="CABINETTYPE" property="expCabinetType"/>
  6. </resultMap>
  7. <!-- 派件相关数据查询(查询类型:已签收、问题件、门店代收、派件入柜)-->
  8. <select id="listCourierInfoList" statementType="CALLABLE">
  9. {call P_USERINFOLIST(
  10. #{BeginDate,jdbcType=VARCHAR,mode=IN},
  11. #{EndDate,jdbcType=VARCHAR,mode=IN},
  12. #{SiteName,jdbcType=VARCHAR,mode=IN},
  13. #{EmpNo,jdbcType=VARCHAR,mode=IN},
  14. #{scanType,jdbcType=VARCHAR,mode=IN},
  15. #{rf,jdbcType=CURSOR,mode=OUT,resultMap=CourierInfoMap,javaType=java.sql.ResultSet}
  16. )}
  17. </select>

后台代码

  • ServiceImp实现类获取存储过程返回值

    @Override
    public List listCourierInfoList(Map map) {

    1. this.courierInfoDao.listCourierInfoList(map);
    2. return (List) map.get("rf");

    }

发表评论

表情:
评论列表 (有 0 条评论,495人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Mybatis调用存储过程

    1.创建存储过程 例如 存储过程中 in,out, in out 表示; in 是参数的默认模式,这种模式就是在程序运行的时候已经具有值,在程序体中值不会改变。 out模

    相关 MyBatis 调用存储过程

    什么是存储过程?      SQL语句在执行的时候需要先编译,然后执行。数据库的存储过程(Procedure)是一组为了完成特定功能的SQL语句,编译后存储在数据库中,用户通