iBATIS入門程序六大步詳解

iBATIS入門程序第一步:author.java

  1. package com.ibatis;  
  2.  
  3. public class Author {  
  4.  
  5.     private int id;  
  6.  
  7.     private String name;  
  8.  
  9.     public int getId() {  
  10.  
  11.        return id;  
  12.  
  13.     }  
  14.  
  15.     public void setId(int id) {  
  16.  
  17.        this.id = id;  
  18.  
  19.     }  
  20.  
  21.     public String getName() {  
  22.  
  23.        return name;  
  24.  
  25.     }  
  26.  
  27.     public void setName(String name) {  
  28.  
  29.        this.name = name;  
  30.  
  31.     }  
  32.  

iBATIS入門程序第二步:author.xml

  1. ﹤?xml version="1.0" encoding="UTF-8" ?﹥  
  2.  
  3. ﹤!DOCTYPE sqlMap  
  4.  
  5. PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"  
  6.  
  7. "http://www.ibatis.com/dtd/sql-map-2.dtd"﹥  
  8.  
  9. ﹤sqlMap namespace="Author"﹥  
  10.  
  11. ﹤!--模塊配置--﹥  
  12.  
  13. ﹤!--設置本映射文件中的別名--﹥  
  14.  
  15. ﹤typeAlias alias="author" type="com.ibatis.Author" /﹥  
  16.  
  17. ﹤!--  
  18.  
  19. ﹤cacheModel type="LRU" ﹥  
  20.  
  21.  設置緩存有效期,如果超出這個時間,則會清空緩存  
  22.  
  23.  ﹤flushInterval hours="24"﹥﹤/flushInterval﹥   
  24.  
  25.  指定執行特定的statement時,清空緩存  
  26.  
  27.  ﹤flushOnExecute statement="updateAuthor"/﹥  
  28.  
  29.  SIZE:本cacheModel最大容納數據對象的數量  
  30.  
  31.  ﹤property value="1000"/﹥  
  32.  
  33. ﹤/cacheModel﹥  
  34.  
  35. 需要使用模塊配置,如:﹤select resultClass="author" cacheModel="authorCache"﹥  
  36.  
  37. 把記錄使用cacheModel"authorCache"進行緩存,以後程序再使用statement進行數據查詢,就直接  
  38.  
  39. 去緩存中取數據,而不是去數據庫中取數據  
  40.  
  41. --﹥  
  42.  
  43. ﹤!--Statement配置--﹥  
  44.  
  45.    
  46.  
  47. ﹤select resultClass="author"﹥  
  48.  
  49.  ﹤![CDATA[SELECT * FROM author]]﹥  
  50.  
  51. ﹤/select﹥  
  52.  
  53.    
  54.  
  55. ﹤update parameterClass="author"﹥  
  56.  
  57.  ﹤![CDATA[UPDATE author SET WHERE ﹥   
  58.  
  59. ﹤/update﹥  
  60.  
  61.    
  62.  
  63. ﹤delete parameterClass="author"﹥   
  64.  
  65.   delete from author WHERE   
  66.  
  67. ﹤/delete﹥   
  68.  
  69.    
  70.  
  71. ﹤insert parameterClass="author"﹥  
  72.  
  73.  ﹤![CDATA[INSERT INTO author(id,name) VALUES(#id#,#name#)]]﹥  
  74.  
  75. ﹤/insert﹥  
  76.  
  77. ﹤/sqlMap﹥ 

iBATIS入門程序第三步:SqlMapConfig.properties

  1. driver=com.microsoft.jdbc.sqlserver.SQLServerDriver  
  2.  
  3. url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=ibatis  
  4.  
  5. username=sa  
  6.  
  7. password=sa 

iBATIS入門程序第四步:SqlMapConfig.xml

  1. ﹤?xml version="1.0" encoding="UTF-8" ?﹥  
  2.  
  3. ﹤!DOCTYPE sqlMapConfig  
  4.  
  5. PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"  
  6.  
  7. "http://www.ibatis.com/dtd/sql-map-config-2.dtd"﹥  
  8.  
  9. ﹤!-- Ibatis配置文件--﹥  
  10.  
  11. ﹤sqlMapConfig﹥  
  12.  
  13. ﹤!-- 加載連接數據庫屬性文件 --﹥  
  14.  
  15. ﹤properties resource="com/ibatis/SqlMapConfig.properties"/﹥  
  16.  
  17. ﹤!--  
  18.  
  19. cacheModelsEnabled:是否啓動SqlMapClient的緩存機制。  
  20.  
  21. enhancementEnabled:是否針對POJO啓用字節碼增加機制以提升geter/seter的調用效用,爲延遲加載帶來了及大的性能提升。  
  22.  
  23. lazyLoadingEnabled:是否啓用延遲加載機制。  
  24.  
  25. maxRequests:最大並大請求數。  
  26.  
  27. maxSessions:最大Session數,即當前最大允許的開發SqlMapClient數  
  28.  
  29. maxTransactions:最大併發事務數。     
  30.  
  31. --﹥  
  32.  
  33. ﹤settings  
  34.  
  35. cacheModelsEnabled="true" 
  36.  
  37. enhancementEnabled="true" 
  38.  
  39. lazyLoadingEnabled="true" 
  40.  
  41. maxRequests="32" 
  42.  
  43. maxSessions="10" 
  44.  
  45. maxTransactions="5" 
  46.  
  47. useStatementNamespaces="false" 
  48.  
  49. /﹥  
  50.  
  51. ﹤!-- datasource --﹥  
  52.  
  53. ﹤transactionManager type="JDBC" ﹥  
  54.  
  55. ﹤dataSource type="SIMPLE"﹥  
  56.  
  57. ﹤!--JDBC驅動--﹥  
  58.  
  59. ﹤property name=JDBC.Driver value="${driver}"/﹥  
  60.  
  61. ﹤!--數據庫URL--﹥  
  62.  
  63. ﹤property value="${url}"/﹥  
  64.  
  65. ﹤!--數據庫用戶名--﹥  
  66.  
  67. ﹤property value="${username}"/﹥  
  68.  
  69. ﹤!--數據庫密碼--﹥  
  70.  
  71. ﹤property value="${password}"/﹥  
  72.  
  73. ﹤!--不知道,在網站上查不出來,有時間再研究--﹥  
  74.  
  75. ﹤property value="true" /﹥  
  76.  
  77. ﹤!--數據庫連接池可維持的最大容量--﹥  
  78.  
  79. ﹤property value="10"/﹥  
  80.  
  81. ﹤!--數據庫連接池中允許的可掛起連接數--﹥  
  82.  
  83. ﹤property value="5"/﹥  
  84.  
  85. ﹤!--數據庫連接池中,連接被某個任務所佔用的最大時間--﹥  
  86.  
  87. ﹤property value="120000"/﹥  
  88.  
  89. ﹤!--當線程想從連接池中獲取連接時,連接池中無可用連接,該參數設置線程所允許等待的最長時間--﹥  
  90.  
  91. ﹤property value="500"/﹥  
  92.  
  93. ﹤!--數據庫連接狀態檢查語句--﹥  
  94.  
  95. ﹤property value="select 1 from author"/﹥  
  96.  
  97. ﹤!--是否允許檢查連接狀態--﹥  
  98.  
  99. ﹤property value="false"/﹥  
  100.  
  101. ﹤!--對持續連接超過設定值的連接進行檢查--﹥  
  102.  
  103. ﹤property value="1"/﹥  
  104.  
  105. ﹤!--對空閒超過設定值的連接進行檢查--﹥  
  106.  
  107. ﹤property value="1"/﹥  
  108.  
  109. ﹤/dataSource﹥  
  110.  
  111. ﹤/transactionManager﹥  
  112.  
  113. ﹤!--加載SqlMap文件--﹥  
  114.  
  115. ﹤sqlMap resource="com/ibatis/author.xml" /﹥  
  116.  
  117. ﹤/sqlMapConfig﹥ 

iBATIS入門程序第五步:

  1. package com.ibatis;  
  2.  
  3. import java.io.IOException;  
  4.  
  5. import java.io.Reader;  
  6.  
  7. import com.ibatis.common.resources.Resources;  
  8.  
  9. import com.ibatis.sqlmap.client.SqlMapClient;  
  10.  
  11. import com.ibatis.sqlmap.client.SqlMapClientBuilder;  
  12.  
  13. public class SqlMapConf {  
  14.  
  15.  //初始化SqlMapClient  
  16.  
  17.  private static SqlMapClient sqlmapclient;  
  18.  
  19.  static{  
  20.  
  21.   //定義ibatis配置文件的路徑  
  22.  
  23.   String resource="com/ibatis/SqlMapConfig.xml";  
  24.  
  25.   try {  
  26.  
  27.    //讀取ibatis配置文件  
  28.  
  29.    Reader reader=Resources.getResourceAsReader(resource);  
  30.  
  31.    //通過SqlMapClientBuilder創建SqlMapClient  
  32.  
  33.    sqlmapclient=SqlMapClientBuilder.buildSqlMapClient(reader);  
  34.  
  35.   } catch (IOException e) {  
  36.  
  37.    // TODO Auto-generated catch block  
  38.  
  39.    System.out.println("找不到SqlMapConfig.xml文件~~");  
  40.  
  41.   }  
  42.  
  43.  }  
  44.  
  45.  public static SqlMapClient getInstance(){  
  46.  
  47.   //返回sqlmapclient,SqlMapClient是ibatis的核心主建,提供數據操作的基礎平臺  
  48.  
  49.     
  50.  
  51.   return sqlmapclient;  
  52.  
  53.  }  
  54.  
  55.  /**  
  56.  
  57.   * SqlMapClient的另一種創建方式  
  58.  
  59.   * XmlSqlMapClientBuilder xmlbuilder=new XmlSqlMapClientBuilder();  
  60.  
  61.   * SqlMapClient sqlmapclient=xmlbuilder.builderSqlMap(reader);  
  62.  
  63.   * XmlSqlMapClientBuilder是ibatis2.0之後版本新引入的組件,用以取代1.X版本中的  
  64.  
  65.   * XmlSqlMapBuilder,其作用就是創建SqlMapClient。  
  66.  
  67.   */  
  68.  

iBATIS入門程序第六步:

  1. package com.ibatis;  
  2.  
  3. import java.sql.SQLException;  
  4.  
  5. import java.util.List;  
  6.  
  7. import java.util.*;  
  8.  
  9. import com.ibatis.sqlmap.client.SqlMapClient;  
  10.  
  11. /**  
  12.  
  13.  * ibatis的事務管理器,目前只支持三種:JDBC,JTA,EXTERNAL  
  14.  
  15.  * JDBC:通過傳統的JDBC CONNECTION.COMIT/rollback實現事務支持  
  16.  
  17.  * JTA:使用容器提供的JTA服務實現全局事務管理  
  18.  
  19.  * EXTERNAL:外部事務管理,如EJB中使用IBATIS,通過EJB的部署配置即可實現自動的事務管理機制  
  20.  
  21.  * 。此時IBATIS將把所有的事務委託給外部容器進行管理  
  22.  
  23.  */ 
  24.  
  25. public class IbatisClient {  
  26.  
  27.  private static SqlMapClient sqlmapclient=SqlMapConf.getInstance();  
  28.  
  29.  //根據主健ID修改NAME  
  30.  
  31.  public static void updateAuthor(int id,String name){  
  32.  
  33.   Author author=new Author();  
  34.  
  35.      author.setId(id);  
  36.  
  37.      author.setName(name);  
  38.  
  39.      try {  
  40.  
  41.       //事務開始,用的是JDBC的事務管理  
  42.  
  43.       sqlmapclient.startTransaction();  
  44.  
  45.    sqlmapclient.update("updateAuthor",author);  
  46.  
  47.    sqlmapclient.commitTransaction();  
  48.  
  49.   } catch (SQLException e) {  
  50.  
  51.    // TODO Auto-generated catch block  
  52.  
  53.    e.printStackTrace();  
  54.  
  55.    System.out.println("修改錯誤~~");  
  56.  
  57.   }  
  58.  
  59.   finally{  
  60.  
  61.    try {  
  62.  
  63.     sqlmapclient.endTransaction();  
  64.  
  65.    } catch (SQLException e) {  
  66.  
  67.     // TODO Auto-generated catch block  
  68.  
  69.     e.printStackTrace();  
  70.  
  71.    }  
  72.  
  73.   }  
  74.  
  75.  }  
  76.  
  77.  //查詢所有的記錄,返回一個集合  
  78.  
  79.  public static List findAll(){  
  80.  
  81.   List list=null;  
  82.  
  83.   try {  
  84.  
  85.    sqlmapclient.startTransaction();  
  86.  
  87.    //0:設置從第幾條記錄開始  
  88.  
  89.    //1:設置顯示記錄記錄  
  90.  
  91.    //list=sqlmapclient.queryForList("getAllAuthor",null,0,1);  
  92.  
  93.    list=sqlmapclient.queryForList("getAllAuthor",null);  
  94.  
  95.    sqlmapclient.commitTransaction();  
  96.  
  97.   } catch (SQLException e) {  
  98.  
  99.    // TODO Auto-generated catch block  
  100.  
  101.    e.printStackTrace();  
  102.  
  103.    System.out.println("查詢錯誤~~");  
  104.  
  105.   }  
  106.  
  107.   finally{  
  108.  
  109.    try {  
  110.  
  111.     sqlmapclient.endTransaction();  
  112.  
  113.    } catch (SQLException e) {  
  114.  
  115.     // TODO Auto-generated catch block  
  116.  
  117.     e.printStackTrace();  
  118.  
  119.    }  
  120.  
  121.   }  
  122.  
  123.   return list;  
  124.  
  125.  }  
  126.  
  127.  //添加操作  
  128.  
  129.  public static boolean insert(int id,String name){  
  130.  
  131.   boolean bool=false;  
  132.  
  133.   Author author=new Author();  
  134.  
  135.   author.setId(id);  
  136.  
  137.   author.setName(name);  
  138.  
  139.   try {  
  140.  
  141.    sqlmapclient.startTransaction();  
  142.  
  143.    sqlmapclient.insert("insertAuthor",author);  
  144.  
  145.    bool=true;  
  146.  
  147.    sqlmapclient.commitTransaction();  
  148.  
  149.   } catch (SQLException e) {  
  150.  
  151.    // TODO Auto-generated catch block  
  152.  
  153.    bool=false;  
  154.  
  155.    e.printStackTrace();  
  156.  
  157.    System.out.println("添加錯誤~~");  
  158.  
  159.   }  
  160.  
  161.   finally{  
  162.  
  163.    try {  
  164.  
  165.     sqlmapclient.endTransaction();  
  166.  
  167.    } catch (SQLException e) {  
  168.  
  169.     // TODO Auto-generated catch block  
  170.  
  171.     e.printStackTrace();  
  172.  
  173.    }  
  174.  
  175.   }  
  176.  
  177.   return bool;  
  178.  
  179.  }  
  180.  
  181.  //刪除操作  
  182.  
  183.  public static boolean delete(int id){  
  184.  
  185.   boolean bool=false;  
  186.  
  187.   Author author=new Author();  
  188.  
  189.   author.setId(id);  
  190.  
  191.   try {  
  192.  
  193.    sqlmapclient.commitTransaction();  
  194.  
  195.    sqlmapclient.delete("deleteAuthor",author);  
  196.  
  197.    bool=true;  
  198.  
  199.    sqlmapclient.startTransaction();  
  200.  
  201.   } catch (SQLException e) {  
  202.  
  203.    // TODO Auto-generated catch block  
  204.  
  205.    bool=false;  
  206.  
  207.    e.printStackTrace();  
  208.  
  209.    System.out.println("刪除錯誤~~");  
  210.  
  211.   }  
  212.  
  213.   finally{  
  214.  
  215.    try {  
  216.  
  217.     sqlmapclient.endTransaction();  
  218.  
  219.    } catch (SQLException e) {  
  220.  
  221.     // TODO Auto-generated catch block  
  222.  
  223.     e.printStackTrace();  
  224.  
  225.    }  
  226.  
  227.   }  
  228.  
  229.   return bool;  
  230.  
  231.  }  
  232.  
  233.     public static void main(String str[]){  
  234.  
  235.      //刪除  
  236.  
  237.      //boolean bool=IbatisClient.delete(3);  
  238.  
  239.      //添加  
  240.  
  241.      //boolean bool=IbatisClient.insert(3,"wanwu");  
  242.  
  243.      //修改  
  244.  
  245.      //IbatisClient.updateAuthor(3,"jj");  
  246.  
  247.      //查詢所有的記錄  
  248.  
  249.      List list=IbatisClient.findAll();  
  250.  
  251.      Iterator iterator=list.iterator();  
  252.  
  253.      while(iterator.hasNext()){  
  254.  
  255.       Author author=(Author)iterator.next();  
  256.  
  257.       System.out.println("﹥   
  258.  
  259.       System.out.println("﹥   
  260.  
  261.      }  
  262.  
  263.     }  
  264.  

iBATIS入門程序就向你介紹到這裏,希望對於你瞭解iBATIS有所幫助。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章