Mybatis調用Oracle中的預存程序和function

來源:互聯網
上載者:User

標籤:

一、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

Mybatis調用Oracle中的預存程序和function

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.