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

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

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

    Vincent

    Vicent's blog
    隨筆 - 74, 文章 - 0, 評論 - 5, 引用 - 0
    數據加載中……

    hibernate調用mysql5.0存儲過程小記

    準備工作:
    1.hibernate3
    到這下載hibernate3:
    http://sourceforge.net/project/showfiles.phpgroup_id=40712&package_id=127784&release_id=403223
    2.mysql (注意一定要用mysql5.0和最新驅動)
    ?mysql官方網站http://www.mysql.com/

    1.建張表
    CREATE?TABLE?`proctest`?(
    ??`id`?
    int(11)?NOT?NULL?auto_increment,
    ??`Name`?
    varchar(20)?default?'''''',
    ??`age`?
    int(11)?default?NULL,
    ??`address`?
    varchar(50)?default?'',
    ??
    PRIMARY?KEY??(`id`)
    )?ENGINE
    =InnoDB?DEFAULT?CHARSET=gb2312;
    插入幾條記錄
    INSERT?INTO?`proctest`?VALUES?(1,'tom',22,'http://www.tkk7.com');
    INSERT?INTO?`proctest`?VALUES?(2,'wujun',25,'http://www.tkk7.com/wujun');
    INSERT?INTO?`proctest`?VALUES?(3,'jerry',30,'深圳');
    INSERT?INTO?`proctest`?VALUES?(4,'wujun',40,'南昌');
    創建存儲過程
    --這只是一個例子,就來個簡單存儲過程
    create?PROCEDURE?testProc()
    begin
    ???
    select?*?from?proctest;
    end;



    打開eclipce新建個java工程,記的把hiberbate3類庫也一起加進去..
    看下結構圖:


    1.新建UserVO.java文件

    package?net.wj.proc.vo;

    public?class?UserVO?{
    ????
    private?int?id;
    ????
    private?String?name;
    ????
    private?int?age;
    ????
    private?String?address;
    ????
    public?UserVO()
    ????
    {}
    順便把它相對應的配置文件也寫上。。
    UserVO.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"?
    >

    <!--?DO?NOT?EDIT:?This?is?a?generated?file?that?is?synchronized?-->
    <!--?by?MyEclipse?Hibernate?tool?integration.???????????????????-->
    <!--?Created?Sat?Apr?22?17:08:56?CST?2006?????????????????????????-->
    <hibernate-mapping>

    ????
    <class?name="net.wj.proc.vo.UserVO"?table="proctest">
    ????????
    <id?name="id"?column="id">
    ????????????
    <generator?class="native"/>
    ????????
    </id>
    ????????
    ????????
    <property?name="name"?column="name"?type="string"?/>
    ????????
    <property?name="age"?column="age"?type="integer"?/>
    ????????
    <property?name="address"?column="address"?type="string"?/>

    ????
    </class>

    ????
    <!--sql查詢-->
    ?????
    <sql-query?name="select">
    ?????
    <![CDATA[select?{usr.*}?from?proctest?usr?]]>
    ?????
    <return?alias="usr"?class="net.wj.proc.vo.UserVO"?/>
    ?????
    </sql-query>

    ?????
    <!--調用存儲過程就在這里配了-->
    ????
    <sql-query?name="getUser"?callable="true">
    ?????
    <return?alias="user"?class="net.wj.proc.vo.UserVO">
    ?????
    ?????
    <return-property?name="id"?column="id"?/>
    ??????
    <return-property?name="name"?column="name"?/>
    ???????
    <return-property?name="age"?column="age"?/>
    ????????
    <return-property?name="address"?column="address"?/>
    ?????
    </return>
    ?????
    <!--這里就是我們剛剛創建的存儲過程名-->
    ?????{call?testProc()}
    ?????
    </sql-query>
    </hibernate-mapping>

    測試代碼
    package?net.wj.proc.test;


    import?java.util.List;

    import?org.hibernate.*;
    import?org.hibernate.cfg.*;
    import?net.wj.proc.vo.*;
    import?org.apache.log4j.*;


    public?class?ProcTest?{

    ????
    /**
    ?????*?
    @param?args
    ?????
    */

    ????Logger?log
    =Logger.getLogger(this.getClass());
    ????
    public?ProcTest()
    ????
    {}
    ????
    public?static?void?main(String[]?args)?{
    ????????System.out.print(
    "start.............................");
    ????????ProcTest?tt
    =new?ProcTest();
    ???????
    //?tt.LoadAll();
    ???????
    //?tt.ExampleSelect();
    ???????tt.ExampleProc();
    ????????
    ????}

    ????
    ????
    //得到Session,
    ????public?Session??getSession()
    ????
    {
    ????????
    try
    ????????
    {
    ????????????Configuration?cfg?
    =?new?Configuration().configure();
    ????????????SessionFactory?sf
    =cfg.buildSessionFactory();
    ????????????Session?ss
    =?sf.openSession();
    ????????????
    return?ss;

    ????????}

    ????????
    catch(Exception?ee)
    ????????
    {
    ????????????System.out.print(
    "失敗"+ee.getMessage());
    ????????????
    return?null;
    ????????}

    ??????
    ????}

    ????
    //這里調我們在UserVO.hbm.xml
    ????
    //sql-query?寫上的name屬性getUser
    ????public?void?ExampleProc()
    ????
    {
    ????????Session?ss
    =this.getSession();
    ????????List?li
    =ss.getNamedQuery("getUser").list();
    ????????
    for(int?i=0;i<li.size();i++)
    ????????
    {
    ????????????UserVO?vo
    =(UserVO)li.get(i);
    ????????????log.info(
    "name:"+vo.getName());
    ????????????log.info(
    "age"+vo.getAge());
    ????????????log.info(
    "address"+vo.getAddress());
    ????????}

    ????????ss.close();
    ????}

    ????
    //配置文件的sql查詢
    ????public?void?ExampleSelect()
    ????
    {
    ???????????Session?ss
    =this.getSession();
    ???????????List?li
    =?ss.getNamedQuery("select").list();
    ????????
    ???????????
    for(int?i=0;i<li.size();i++)
    ???????????
    {
    ????????????UserVO?vo
    =(UserVO)li.get(i);
    ????????????log.info(
    "name:"+vo.getName());
    ????????????log.info(
    "age"+vo.getAge());
    ????????????log.info(
    "address"+vo.getAddress());
    ???????????}

    ???????????ss.close();??
    ????}
    }


    記的用最新的驅動:
    要不然可能會報這個錯
    Exception?in?thread?"main"?org.hibernate.exception.GenericJDBCException:?could?not?execute?query
    ????at?org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:
    91)
    ????at?org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:
    79)
    ????at?org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:
    43)
    ????at?org.hibernate.loader.Loader.doList(Loader.java:
    2148)
    ????at?org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:
    2029)
    ????at?org.hibernate.loader.Loader.list(Loader.java:
    2024)
    ????at?org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:
    111)
    ????at?org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:
    1674)
    ????at?org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:
    147)
    ????at?org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:
    164)
    ????at?net.wj.proc.test.ProcTest.ExampleProc(ProcTest.java:
    45)
    ????at?net.wj.proc.test.ProcTest.main(ProcTest.java:
    22)
    Caused?by:?java.sql.SQLException:?Callable?statments?not?supported.
    ????at?com.mysql.jdbc.Connection.prepareCall(Connection.java:
    1278)
    ????at?org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:
    439)
    ????at?org.hibernate.jdbc.AbstractBatcher.prepareCallableQueryStatement(AbstractBatcher.java:
    115)
    ????at?org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:
    1557)
    ????at?org.hibernate.loader.Loader.doQuery(Loader.java:
    661)
    ????at?org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:
    224)
    ????at?org.hibernate.loader.Loader.doList(Loader.java:
    2145)
    ?????
    8?more
    09:38:18,837??INFO?SessionFactoryImpl:153?-?building?session?factory
    09:38:18,917??WARN?Configurator:126?-?No?configuration?found.?Configuring?ehcache?from?ehcache-failsafe.xml?found?in?the?classpath:?jar:file:/E:/lib/hibernate3/ehcache-1.1.jar!/ehcache-failsafe.xml
    09:38:21,951??INFO?SessionFactoryObjectFactory:82?-?Not?binding?factory?to?JNDI,?no?JNDI?name?configured
    Hibernate:?
    {call?testProc()}
    09:38:22,482??WARN?JDBCExceptionReporter:71?-?SQL?Error:?0,?SQLState:?S1C00
    09:38:22,482?ERROR?JDBCExceptionReporter:72?-?Callable?statments?not?supported.

    源代碼http://www.tkk7.com/Files/wujun/Proc.rar

    是不是挺簡單的.

    posted on 2006-08-22 10:55 Binary 閱讀(273) 評論(0)  編輯  收藏 所屬分類: Hibernate

    主站蜘蛛池模板: 亚洲AV无码专区国产乱码不卡| 在线视频网址免费播放| 亚洲国产天堂久久久久久| a级片免费在线观看| 亚洲综合激情九月婷婷| 在线看片无码永久免费aⅴ| 精品97国产免费人成视频| 亚洲理论片中文字幕电影| 亚洲AⅤ永久无码精品AA| 精品国产麻豆免费人成网站| 亚洲三级在线观看| 亚洲精品乱码久久久久久中文字幕| 1000部禁片黄的免费看| 人碰人碰人成人免费视频| 亚洲丰满熟女一区二区v| 2022中文字字幕久亚洲| 最近中文字幕无免费视频| 怡红院免费全部视频在线视频| 亚洲综合精品成人| 亚洲av无码精品网站| 国产成人免费片在线观看| 曰批视频免费40分钟试看天天| 一级黄色免费大片| 亚洲午夜成人精品无码色欲| 亚洲av之男人的天堂网站| 国产乱人免费视频| 一个人看的www在线观看免费| 免费萌白酱国产一区二区三区 | 亚洲熟妇无码久久精品| 亚洲一区二区高清| 在线视频免费观看www动漫| 99在线热视频只有精品免费| 一道本不卡免费视频| 亚洲av无码兔费综合| 亚洲国产成人综合| 亚洲成AV人片一区二区| 亚洲乱亚洲乱少妇无码| 免费一级一片一毛片| 女人18毛片特级一级免费视频| 亚洲一区免费视频| 亚洲免费精彩视频在线观看|