Java-Mybatis 调用 Oracle 存储过程

2025年07月23日 11:46 · 阅读(113) ·

Oracle 存储过程

  1. CREATE OR REPLACE PACKAGE BODY P_Test_Calc IS
  2. Procedure Data_Process(p1 In Number,
  3. p2 In Varchar2 Default Null,
  4. x1 Out Nocopy Varchar2,
  5. x2 Out Nocopy Varchar2
  6. )
  7. -- 存储过程逻辑
  8. END Data_Process;
  9. END P_Test_Calc;

TestPersistent.xml

  1. <select id="dataProcess" statementType="CALLABLE" parameterType="java.util.HashMap" resultType="java.util.Map">
  2. {call user.P_Test_Calc.Data_Process
  3. (p1 => #{p1,mode=IN,jdbcType=NUMERIC},
  4. p2 => #{p2,mode=IN,jdbcType=VARCHAR},
  5. x1 => #{x1,mode=OUT,jdbcType=VARCHAR},
  6. x2 => #{x2,mode=OUT,jdbcType=VARCHAR}
  7. )}
  8. </select>

TestPersistent

  1. public interface TestPersistent {
  2. void dataProcess(HashMap<String, Object> param);
  3. }

调用逻辑

  1. HashMap<String, Object> param = new HashMap<>();
  2. param.put("p1", 1);
  3. param.put("p2", "luoma");
  4. TestPersistent.dataProcess(param);
  5. // 返回值
  6. String code = param.get("x1");
  7. String msg = param.get("x2");