Mybatis调用Oracle中的存储过程和function

    xiaoxiao2021-03-25  101

    一、Mybatis调用存储过程 1 在数据库中创建以下的存储过程 create or replace procedure pro_hello(p_user_name in varchar2,p_result out varchar2) is begin   p_result := 'hello,' || p_user_name; end; 2 编写SQL映射文件mapper.xml statementType里的CALLABLE是标注此sql为存储过程。 parameterType是标注要传的参数,看了一些资料不写parameterType的话默认传map。还是加上比较清晰 <select id="proHello" parameterType="java.util.map" statementType="CALLABLE"> {call pro_hello(#{uname,mode=IN,jdbcType=VARCHAR},#{result,mode=OUT,jdbcType=VARCHAR})} </select> 3 编写JAVA代码调用存储过程 public class ProcedureTest {           public static void main(String[] args) throws IOException {             String resource = "mybatis.cfg.xml";             Reader reader = Resources.getResourceAsReader(resource);             SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(reader);             SqlSession session = ssf.openSession();             try {                  Map<String, String> param = new HashMap<String, String>();                  param.put("uname", "zhangsan");                  param.put("result", "");                  String returnValue = (String) session.selectOne("User.proHello", param);                  System.out.println("message=" + param.get("uname"));                  System.out.println("result=" + param.get("result"));                  System.out.println("returnValue=" + returnValue);             } catch (Exception e) {                 e.printStackTrace();            } finally {               session.close();           }        } } 二、Mybatis调用function function带有返回值,假设一个oracle函数增加学生后返回成功与否的字符串 <select id="isMember" statementType="CALLABLE" parameterType="cn.StudentDto">   {#{result,mode=OUT,jdbvType=VARCHAR} = call  addStudent(#{num,mode=IN,jdbcType=DECIMAL},#{name,mode=IN,jdbcType=VARCHAR},#{rollInYear,mode=IN,jdbcType=Date},#{age,mode=OUT,jdbcType=INTEGER})}   </select>

    StudentDTO除了上述出现的学生信息字段外还需要String类型的result字段。

    原帖地址:

    http://chenjc-it.iteye.com/blog/1443432

    http://shen84121062.iteye.com/blog/1213857

    转载请注明原文地址: https://ju.6miu.com/read-17920.html

    最新回复(0)