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

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

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

    冰浪

    哥已不再年輕 - 堅定夢想,畢生追求!
    posts - 85, comments - 90, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    [轉]Ibatis開發Demo

    Posted on 2007-04-11 16:08 冰浪 閱讀(1517) 評論(2)  編輯  收藏 所屬分類: Frameworks

    iBatis是又一個O/R Mapping解決方案,j2ee的O/R方案真是多,和Hibernate相比,iBatis最大的特點就是小巧,上手很快。如果你不需要太多復雜的功能,iBatis是能滿足你的要求又足夠靈活的最簡單的解決方案。


    第一步:
    package com.ibatis;

    public class Author {
     private int id;
     private String name;
     public int getId() {
      return id;
     }
     public void setId(int id) {
      this.id = id;
     }
     public String getName() {
      return name;
     }
     public void setName(String name) {
      this.name = name;
     }
    }
    第二步:author.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMap
    PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
    "<sqlMap namespace="Author">
    <!--模塊配置-->
    <!--設置本映射文件中的別名-->
    <typeAlias alias="author" type="com.ibatis.Author" />
    <!--
    <cacheModel type="LRU" id="authorCache">
     設置緩存有效期,如果超出這個時間,則會清空緩存
     <flushInterval hours="24"></flushInterval>
     指定執行特定的statement時,清空緩存
     <flushOnExecute statement="updateAuthor"/>
     SIZE:本cacheModel最大容納數據對象的數量
     <property value="1000" name="size"/>
    </cacheModel>
    需要使用模塊配置,如:<select id="getAllAuthor" resultClass="author" cacheModel="authorCache">
    把記錄使用cacheModel“authorCache”進行緩存,以后程序再使用statement進行數據查詢,就直接
    去緩存中取數據,而不是去數據庫中取數據
    -->
    <!--Statement配置-->
    <!--修改-->
    <update id="updateAuthor" parameterClass="author">
     <![CDATA[UPDATE author SET name=#name# WHERE id=#id#]]>
    </update>
    <!--刪除-->
    <delete id="deleteAuthor" parameterClass="author">
      delete from author WHERE id = #id#
    </delete>
    <!--查詢所有的記錄-->
    <select id="getAllAuthor" resultClass="author">
     <![CDATA[SELECT * FROM author]]>
    </select>
    <!--添加-->
    <insert id="insertAuthor" parameterClass="author">
     <![CDATA[INSERT INTO author(id,name) VALUES(#id#,#name#)]]>
    </insert>
    </sqlMap>
    第三步:SqlMapConfig.properties
    driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
    url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=ibatis
    username=sa
    password=
    第四步:SqlMapConfig.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE sqlMapConfig
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "
    <!-- Ibatis配置文件-->
    <sqlMapConfig>
    <!-- 加載連接數據庫屬性文件 -->
    <properties resource="com/ibatis/SqlMapConfig.properties" />
    <!--
    cacheModelsEnabled:是否啟動SqlMapClient的緩存機制。
    enhancementEnabled:是否針對POJO啟用字節碼增加機制以提升geter/seter的調用效用,為延遲
         加載帶來了及大的性能提升。
    lazyLoadingEnabled:是否啟用延遲加載機制。
    maxRequests:最大并大請求數。
    maxSessions:最大Session數,即當前最大允許的開發SqlMapClient數
    maxTransactions:最大并發事務數。  
    -->
    <settings
    cacheModelsEnabled="true"
    enhancementEnabled="true"
    lazyLoadingEnabled="true"
    maxRequests="32"
    maxSessions="10"
    maxTransactions="5"
    useStatementNamespaces="false"
    />

    <!-- datasource -->
    <transactionManager type="JDBC" >
    <dataSource type="SIMPLE">
    <!--JDBC驅動-->
    <property name="JDBC.Driver" value="${driver}"/>
    <!--數據庫URL-->
    <property name="JDBC.ConnectionURL" value="${url}"/>
    <!--數據庫用戶名-->
    <property name="JDBC.Username" value="${username}"/>
    <!--數據庫密碼-->
    <property name="JDBC.Password" value="${password}"/>
    <!--不知道,在網站上查不出來,有時間再研究-->
    <property name="JDBC.DefaultAutoCommit" value="true" />
    <!--數據庫連接池可維持的最大容量-->
    <property name="Pool.MaximumActiveConnections" value="10"/>
    <!--數據庫連接池中允許的可掛起連接數-->
    <property name="Pool.MaximumIdleConnections" value="5"/>
    <!--數據庫連接池中,連接被某個任務所占用的最大時間-->
    <property name="Pool.MaximumCheckoutTime" value="120000"/>
    <!--當線程想從連接池中獲取連接時,連接池中無可用連接,該參數設置線程所允許等待的最長時間-->
    <property name="Pool.TimeToWait" value="500"/>
    <!--數據庫連接狀態檢查語句-->
    <property name="Pool.PingQuery" value="select 1 from author"/>
    <!--是否允許檢查連接狀態-->
    <property name="Pool.PingEnabled" value="false"/>
    <!--對持續連接超過設定值的連接進行檢查-->
    <property name="Pool.PingConnectionsOlderThan" value="1"/>
    <!--對空閑超過設定值的連接進行檢查-->
    <property name="Pool.PingConnectionsNotUsedFor" value="1"/>
    </dataSource>
    </transactionManager>
    <!--加載SqlMap文件-->
    <sqlMap resource="com/ibatis/author.xml" />
    </sqlMapConfig>
    第五步:
    package com.ibatis;

    import java.io.IOException;
    import java.io.Reader;

    import com.ibatis.common.resources.Resources;
    import com.ibatis.sqlmap.client.SqlMapClient;
    import com.ibatis.sqlmap.client.SqlMapClientBuilder;
    public class SqlMapConf {
     //初始化SqlMapClient
     private static SqlMapClient sqlmapclient;
     static{
      //定義ibatis配置文件的路徑
      String resource="com/ibatis/SqlMapConfig.xml";
      try {
       //讀取ibatis配置文件
       Reader reader=Resources.getResourceAsReader(resource);
       //通過SqlMapClientBuilder創建SqlMapClient
       sqlmapclient=SqlMapClientBuilder.buildSqlMapClient(reader);
      } catch (IOException e) {
       // TODO Auto-generated catch block
       System.out.println("找不到SqlMapConfig.xml文件~~");
      }
     }
     public static SqlMapClient getInstance(){
      //返回sqlmapclient,SqlMapClient是ibatis的核心主建,提供數據操作的基礎平臺
     
      return sqlmapclient;
     }
     /**
      * SqlMapClient的另一種創建方式
      * XmlSqlMapClientBuilder xmlbuilder=new XmlSqlMapClientBuilder();
      * SqlMapClient sqlmapclient=xmlbuilder.builderSqlMap(reader);
      * XmlSqlMapClientBuilder是ibatis2.0之后版本新引入的組件,用以取代1.X版本中的
      * XmlSqlMapBuilder,其作用就是創建SqlMapClient。
      */
    }
    第六步:
    package com.ibatis;

    import java.sql.SQLException;
    import java.util.List;
    import java.util.*;
    import com.ibatis.sqlmap.client.SqlMapClient;
    /**
     * ibatis的事務管理器,目前只支持三種:JDBC,JTA,EXTERNAL
     * JDBC:通過傳統的JDBC CONNECTION.COMIT/rollback實現事務支持
     * JTA:使用容器提供的JTA服務實現全局事務管理
     * EXTERNAL:外部事務管理,如EJB中使用IBATIS,通過EJB的部署配置即可實現自動的事務管理機制
     * 。此時IBATIS將把所有的事務委托給外部容器進行管理
     */
    public class IbatisClient {
     private static SqlMapClient sqlmapclient=SqlMapConf.getInstance();
     //根據主健ID修改NAME
     public static void updateAuthor(int id,String name){
      Author author=new Author();
         author.setId(id);
         author.setName(name);
         try {
          //事務開始,用的是JDBC的事務管理
          sqlmapclient.startTransaction();
       sqlmapclient.update("updateAuthor",author);
       sqlmapclient.commitTransaction();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       System.out.println("修改錯誤~~");
      }
      finally{
       try {
        sqlmapclient.endTransaction();
       } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
     }
     //查詢所有的記錄,返回一個集合
     public static List findAll(){
      List list=null;
      try {
       sqlmapclient.startTransaction();
       //0:設置從第幾條記錄開始
       //1:設置顯示記錄記錄
       //list=sqlmapclient.queryForList("getAllAuthor",null,0,1);
       list=sqlmapclient.queryForList("getAllAuthor",null);
       sqlmapclient.commitTransaction();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
       System.out.println("查詢錯誤~~");
      }
      finally{
       try {
        sqlmapclient.endTransaction();
       } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
      return list;
     }
     //添加操作
     public static boolean insert(int id,String name){
      boolean bool=false;
      Author author=new Author();
      author.setId(id);
      author.setName(name);
      try {
       sqlmapclient.startTransaction();
       sqlmapclient.insert("insertAuthor",author);
       bool=true;
       sqlmapclient.commitTransaction();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       bool=false;
       e.printStackTrace();
       System.out.println("添加錯誤~~");
      }
      finally{
       try {
        sqlmapclient.endTransaction();
       } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
      return bool;
     }
     //刪除操作
     public static boolean delete(int id){
      boolean bool=false;
      Author author=new Author();
      author.setId(id);
      try {
       sqlmapclient.commitTransaction();
       sqlmapclient.delete("deleteAuthor",author);
       bool=true;
       sqlmapclient.startTransaction();
      } catch (SQLException e) {
       // TODO Auto-generated catch block
       bool=false;
       e.printStackTrace();
       System.out.println("刪除錯誤~~");
      }
      finally{
       try {
        sqlmapclient.endTransaction();
       } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
      return bool;
     }
        public static void main(String str[]){
         //刪除
         //boolean bool=IbatisClient.delete(3);
         //添加
         //boolean bool=IbatisClient.insert(3,"wanwu");
         //修改
         //IbatisClient.updateAuthor(3,"jj");
         //查詢所有的記錄
         List list=IbatisClient.findAll();
         Iterator iterator=list.iterator();
         while(iterator.hasNext()){
          Author author=(Author)iterator.next();
          System.out.println("ID ="+author.getId());
          System.out.println("NAME ="+author.getName());
         }
        }
    }
    以上是一個簡單的Ibatis的增,刪,改查的例子


     


    評論

    # re: [轉]Ibatis開發Demo  回復  更多評論   

    2007-08-17 14:26 by b
    bbbbbbbbbbbbbb

    # re: [轉]Ibatis開發Demo  回復  更多評論   

    2008-05-09 12:11 by haix
    xml文件去哪里了
    主站蜘蛛池模板: 一级毛片免费播放男男| 亚洲精品理论电影在线观看| 久久WWW免费人成—看片| 亚洲精品成人区在线观看| 野花视频在线官网免费1| 又爽又黄无遮挡高清免费视频| 人人狠狠综合久久亚洲| 免费v片视频在线观看视频| 国产亚洲人成在线影院| 亚洲日韩在线中文字幕第一页| 国产成人无码免费网站| 亚洲无人区午夜福利码高清完整版| 最近国语视频在线观看免费播放| 亚洲国产精品无码专区| 91精品国产免费网站| 亚洲1234区乱码| 免费永久在线观看黄网站| 一级做a爰性色毛片免费| 亚洲日韩国产精品第一页一区| 久久成人免费大片| 亚洲一区二区免费视频| 国产jizzjizz免费看jizz| 国产精品免费久久| 亚洲黄色中文字幕| 国产大片91精品免费看3| 中国一级毛片免费看视频| 亚洲精品成人av在线| 免费无码黄十八禁网站在线观看 | 亚洲黄色免费电影| 欧洲精品免费一区二区三区| 一级毛片大全免费播放下载| 中文字幕亚洲综合久久2| 日韩a在线观看免费观看| 光棍天堂免费手机观看在线观看| 亚洲色偷偷偷网站色偷一区| 国产片免费福利片永久| 黄色网站软件app在线观看免费| 亚洲综合中文字幕无线码| 久久精品国产精品亚洲艾草网美妙| 久久国产精品成人片免费| 国产亚洲精彩视频|