我的家園

          我的家園

          Mybatis技術(五)Mybatis調用存儲過程

          Posted on 2012-04-15 16:27 zljpp 閱讀(1843) 評論(0)  編輯  收藏

          ?

          ?

          如何使用Mybaits調用數據庫中的存儲過程,下面以Oracle數據庫的為例:

          ?

          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

          <select id="proHello" statementType="CALLABLE">

          <![CDATA[

          ??? {call pro_hello (#{p_user_name,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("p_user_name", "zhangsan");

          ??????? ? ? ? ? ?String returnValue = (String) session.selectOne("User.proHello", param);

          ??????? ? ? ? ? ?System.out.println("message=" + param.get("p_user_name"));

          ??????? ? ? ? ? ?System.out.println("result=" + param.get("result"));

          ??????? ? ? ? ? ?System.out.println("returnValue=" + returnValue);

          ?

          ? ? ? ? ? ?} catch (Exception e) {

          ? ? ? ? ? ? ? ??e.printStackTrace();

          ? ? ? ? ? ?} finally {

          ? ? ? ? ? ? ??session.close();

          ? ? ? ? ??}

          ???????}

          }

          ?

          4.執行Java代碼,控制臺輸出結果如下:

          2012-03-07 20:36:32,406 DEBUG [java.sql.PreparedStatement] -==>? Executing: {call pro_hello(?,?)}

          2012-03-07 20:36:32,406 DEBUG [java.sql.PreparedStatement] -==> Parameters: zhangsan(String)

          message=zhangsan

          ?






          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 黑水县| 舒城县| 土默特右旗| 武川县| 灵寿县| 开远市| 宜宾市| 峡江县| 中江县| 特克斯县| 江西省| 邵阳县| 思茅市| 武强县| 莱芜市| 清丰县| 云梦县| 武汉市| 罗田县| 嘉义市| 元阳县| 双峰县| 揭西县| 库尔勒市| 和田市| 天全县| 定陶县| 盖州市| 鄂托克前旗| 乳山市| 泗洪县| 商南县| 汤阴县| 崇信县| 樟树市| 梅州市| 宜兰市| 顺义区| 望奎县| 顺昌县| 桓台县|