iBATIS入門程序第一步:author.java
- 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;
- }
- }
iBATIS入門程序第二步:author.xml
- ﹤?xml version="1.0" encoding="UTF-8" ?﹥
- ﹤!DOCTYPE sqlMap
- PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
- "http://www.ibatis.com/dtd/sql-map-2.dtd"﹥
- ﹤sqlMap namespace="Author"﹥
- ﹤!--模塊配置--﹥
- ﹤!--設置本映射文件中的別名--﹥
- ﹤typeAlias alias="author" type="com.ibatis.Author" /﹥
- ﹤!--
- ﹤cacheModel type="LRU" ﹥
- 設置緩存有效期,如果超出這個時間,則會清空緩存
- ﹤flushInterval hours="24"﹥﹤/flushInterval﹥
- 指定執行特定的statement時,清空緩存
- ﹤flushOnExecute statement="updateAuthor"/﹥
- SIZE:本cacheModel最大容納數據對象的數量
- ﹤property value="1000"/﹥
- ﹤/cacheModel﹥
- 需要使用模塊配置,如:﹤select resultClass="author" cacheModel="authorCache"﹥
- 把記錄使用cacheModel"authorCache"進行緩存,以後程序再使用statement進行數據查詢,就直接
- 去緩存中取數據,而不是去數據庫中取數據
- --﹥
- ﹤!--Statement配置--﹥
- ﹤select resultClass="author"﹥
- ﹤![CDATA[SELECT * FROM author]]﹥
- ﹤/select﹥
- ﹤update parameterClass="author"﹥
- ﹤![CDATA[UPDATE author SET WHERE ﹥
- ﹤/update﹥
- ﹤delete parameterClass="author"﹥
- delete from author WHERE
- ﹤/delete﹥
- ﹤insert parameterClass="author"﹥
- ﹤![CDATA[INSERT INTO author(id,name) VALUES(#id#,#name#)]]﹥
- ﹤/insert﹥
- ﹤/sqlMap﹥
iBATIS入門程序第三步:SqlMapConfig.properties
- driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
- url=jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=ibatis
- username=sa
- password=sa
iBATIS入門程序第四步:SqlMapConfig.xml
- ﹤?xml version="1.0" encoding="UTF-8" ?﹥
- ﹤!DOCTYPE sqlMapConfig
- PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
- "http://www.ibatis.com/dtd/sql-map-config-2.dtd"﹥
- ﹤!-- 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 value="${url}"/﹥
- ﹤!--數據庫用戶名--﹥
- ﹤property value="${username}"/﹥
- ﹤!--數據庫密碼--﹥
- ﹤property value="${password}"/﹥
- ﹤!--不知道,在網站上查不出來,有時間再研究--﹥
- ﹤property value="true" /﹥
- ﹤!--數據庫連接池可維持的最大容量--﹥
- ﹤property value="10"/﹥
- ﹤!--數據庫連接池中允許的可掛起連接數--﹥
- ﹤property value="5"/﹥
- ﹤!--數據庫連接池中,連接被某個任務所佔用的最大時間--﹥
- ﹤property value="120000"/﹥
- ﹤!--當線程想從連接池中獲取連接時,連接池中無可用連接,該參數設置線程所允許等待的最長時間--﹥
- ﹤property value="500"/﹥
- ﹤!--數據庫連接狀態檢查語句--﹥
- ﹤property value="select 1 from author"/﹥
- ﹤!--是否允許檢查連接狀態--﹥
- ﹤property value="false"/﹥
- ﹤!--對持續連接超過設定值的連接進行檢查--﹥
- ﹤property value="1"/﹥
- ﹤!--對空閒超過設定值的連接進行檢查--﹥
- ﹤property value="1"/﹥
- ﹤/dataSource﹥
- ﹤/transactionManager﹥
- ﹤!--加載SqlMap文件--﹥
- ﹤sqlMap resource="com/ibatis/author.xml" /﹥
- ﹤/sqlMapConfig﹥
iBATIS入門程序第五步:
- 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。
- */
- }
iBATIS入門程序第六步:
- 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("﹥
- System.out.println("﹥
- }
- }
- }
iBATIS入門程序就向你介紹到這裏,希望對於你瞭解iBATIS有所幫助。