<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
    DB2中簡單存儲過程 selectAllUsers

    CREATE  procedure selectAllUsers 
    DYNAMIC RESULT SETS 1
    BEGIN 
          DECLARE temp_cursor1 CURSOR  WITH RETURN TO CLIENT  FOR 
          SELECT * FROM  test;   
          OPEN temp_cursor1;
    END;

    映射文件中關于存儲過程內容如下

    <hibernate-mapping package="com.unmi.vo">
        <class name="Test" table="TEST">
         ............
        </class>

        <sql-query callable="true" name="selectAllUsers">
    <return alias="aa" class="Test">
        <return-property name="oborqt" column="OBORQT"/>
        <return-property name="moorqt" column="MOORQT"/>
        <return-property name="roschn" column="ROSCHN"/>
        <return-property name="plandate" column="PLANDATE"/>
    </return>
    { ? = call selectAllUsers() }
        </sql-query>
    </hibernate-mapping>

    { ? = call selectAllUsers() } 也可以寫成{ call selectAllUsers() },
    如果有參數就寫成
    { ? = call selectAllUsers(?,?,?) }
    代碼中對query設置相應位置上的值就OK

    Java調用關鍵代碼如下
          
      Session session = HibernateUtil.currentSession();
      Query query = session.getNamedQuery("selectAllUsers");
      List list = query.list();
      System.out.println(list);

    要求你的存儲過程必須能返回記錄集,否則要出錯
    如果你的存儲過程是完成非查詢任務就應該在配置文件用以下三個標簽
      <sql-insert callable="true">{call createPerson (?, ?)}</sql-insert>
      <sql-delete callable="true">{? = call deletePerson (?)}</sql-delete>
      <sql-update callable="true">{? = call updatePerson (?, ?)}</sql-update>

    有一點不好的地方就是調用存儲過程獲取記錄集時,不能對Query使用
    setFirstResult(int)和setMaxResults(int)方法來分頁



    要求你的存儲過程必須能返回記錄集,否則要出錯


    上面這句話是關鍵。
    ==========================================================================
    hibernate調用mysql5.0存儲過程
    關鍵代碼:
    數據庫存儲過程
    Create procedure SP_get_UserInfo()
    as
    begin
        select *
        from user
       order by Id
    end

    hibernate相對應的配置文件User.hbm.xml
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!--
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping>
        <class name="com.test.hibernate.db.User" table="user"
            catalog="user">
            <id name="id" type="java.lang.Long">
                <column name="ID" />
                <generator class="assigned" />
            </id>
            <property name="name" type="java.lang.String">
                <column name="name" length="500" />
            </property>
            <property name="sex" type="java.lang.String">
                <column name="sex" length="10" />
            </property>
            <!--
                <property name="born" type="java.util.Date">
                <column name="born" length="0" />
                </property>
            -->
            <property name="born" type="java.lang.String">
                <column name="born" length="0" />
            </property>
            <property name="address" type="java.lang.String">
                <column name="address" />
            </property>
        </class>
       
        <!--調用存儲過程就在這里配 -->
        <sql-query name="getUser" callable="true">
            <return alias="user" class="com.test.hibernate.db.User">
                <return-property name="id" column="ID" />
                <return-property name="name" column="name" />
                <return-property name="sex" column="sex" />
                <return-property name="born" column="born" />
                <return-property name="address" column="address"/>
            </return>
            { call SP_get_UserInfo() }
        </sql-query>

    </hibernate-mapping>

    調用存儲過程的Java代碼:
           
            Session querySession = HibernateSessionFactory.getSession();
            querySession.clear();
            List lst = uerySession.getNamedQuery("getUser").list();
            for(int i=0;i<lst.size();i++)
            {
                usr=(User)lst.get(i);
                System.out
                .println(usr.getId() + " " + usr.getName() + " "
                        + usr.getSex() + " " + usr.getBorn() + " "
                        + usr.getAddress());
            }
           HibernateSessionFactory.closeSession();

    一個簡單的存儲過程調用就這樣完成了!
    posted on 2008-09-19 17:45 蘆葦 閱讀(999) 評論(0)  編輯  收藏 所屬分類: 數據庫JAVAHibernate
    主站蜘蛛池模板: 亚洲一线产品二线产品| 久久精品国产亚洲av麻豆图片| 亚洲六月丁香婷婷综合| 亚洲成a∨人片在无码2023| 99re6在线精品免费观看| 亚洲精品美女久久久久99小说| 国产精品亚洲专区在线播放| 国产高清免费观看| 阿v免费在线观看| 色播精品免费小视频| 亚洲国产婷婷综合在线精品 | 亚洲小视频在线播放| 99ee6热久久免费精品6| 亚洲精品电影天堂网| 午夜免费国产体验区免费的| 在线天堂免费观看.WWW| 亚洲人成色777777在线观看| 中文字幕av免费专区| 精品国产亚洲一区二区三区| 久久精品免费电影| 亚洲精品第一国产综合野| 在线免费观看国产视频| 国产日韩精品无码区免费专区国产 | 亚洲日韩国产精品第一页一区| a毛片免费在线观看| 亚洲天堂中文字幕| 中文字幕无线码免费人妻| 亚洲AV本道一区二区三区四区| 在线a级毛片免费视频| 青娱乐在线免费观看视频| 亚洲国产精品一区| 毛片免费全部免费观看| 色噜噜综合亚洲av中文无码| 色窝窝免费一区二区三区| 亚洲AV综合色区无码另类小说 | 精品国产一区二区三区免费| 亚洲国产高清美女在线观看| 免费人成激情视频| 国产成人精品亚洲| 久久久久亚洲精品影视| 日本免费一本天堂在线|