Ibatis-2.3.4.726 增刪改查

1.  SqlMapConfig.xml    在src目錄下

<?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">
<sqlMapConfig>
 
 <!-- 
  1. cacheModelsEnabled 是否啓動sqlMapClient上的緩存機制;
  2. enhancementEnabled是否針對POJO啓用字節碼增強機制以提升getter/setter的調用效能,
    避免使用Java Reflect所帶來的性能開銷,同時也爲Lazy Loading帶來了極大的性能提升;
  3. errorTracingEnabled 是否啓用錯誤日誌;在開發期間建議設爲“true”以方便調試
  4. lazyLoadingEnabled 是否啓動延遲加載機制
  5. maxRequests 最大併發請求數(Statement併發數)
  5. maxTransactions 最大併發事務
  6. maxSessions 最大Session數,即當前最大允許的併發sqlMapClient數(介於maxRequests和maxTransactions之間)
  7. useStatementNamespaces 是否使用Statement命名空間(爲true時,需要追加命名空間)
  -->
 <settings cacheModelsEnabled="true" enhancementEnabled="true"
  lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32"
  maxSessions="10" maxTransactions="5" useStatementNamespaces="false" />
 
 <!-- 
  transactionManager 節點定義了ibatis的事務管理器
  1. JDBC:通過傳統JDBC Connection.commit/rollback實現事務支持
  2. JTA:使用容器提供的JTA服務實現全局事務管理
  3. EXTERNAL:外部事務管理,如EJB中使用ibatis,通過EJB的部署配置即可實現自動事務管理機制
    此時ibatis將所有事務委託給外部容器管理 
  -->
 <transactionManager type="JDBC">
  <!-- 
   dataSource從屬於transactionManager節點,用於設定ibatis運行期使用的DataSource屬性
   type屬性: dataSource節點的type屬性指定了dataSource的實現類型
   1. SIMPLE:
    SIMPLE是ibatis內置的dataSource實現,其中實現了一個簡單的數據庫連接池機制, 對應ibatis 實現類爲
    com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory。
   2. DBCP:
    基於Apache DBCP連接池組件實現的DataSource 封裝,當無容器提供DataSource 服務時,
    建議使用該選項,對應ibatis 實現類爲com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory。
   3. JNDI:
    使用J2EE 容器提供的DataSource 實現,DataSource 將通過指定的JNDI Name 從容器中獲取。
    對應ibatis 實現類爲com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory。
   -->
  <dataSource type="SIMPLE">
   <!-- JDBC驅動 -->
   <!-- 
   <property name="JDBC.Driver" value="oracle.jdbc.driver.OracleDriver" />
    -->
   <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
   <!-- 數據庫URL -->
   <!-- 
   <property name="JDBC.ConnectionURL" value="jdbc:oracle:thin:@192.168.241.27:1521:orcl" />
    -->
   <property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost:3306/mytestdb" />
   <!-- 數據庫用戶名 -->
   <property name="JDBC.Username" value="csz" />
   <!-- 數據庫密碼 -->
   <property name="JDBC.Password" value="csz" />
   <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 ACCOUNT" />
   <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/FirstIbatis.xml" />
</sqlMapConfig>


 

2. log4j.xml文件,也在src目錄下

<?xml version="1.0" encoding="UTF-8"?>     
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">     
        
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' >     
        
    <appender name="myConsole" class="org.apache.log4j.ConsoleAppender">     
        <layout class="org.apache.log4j.PatternLayout">     
            <param name="ConversionPattern"        
                value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] %c{2\} - %l%m%n" />     
        </layout>     
        <!--過濾器設置輸出的級別-->     
        <filter class="org.apache.log4j.varia.LevelRangeFilter">     
            <param name="levelMin" value="debug" />     
            <param name="levelMax" value="warn" />     
            <param name="AcceptOnMatch" value="true" />     
        </filter>     
    </appender>     
     
    <appender name="myFile" class="org.apache.log4j.RollingFileAppender">        
        <param name="File" value="D:/output.log" /><!-- 設置日誌輸出文件名 -->     
        <!-- 設置是否在重新啓動服務時,在原有日誌的基礎添加新日誌 -->     
        <param name="Append" value="true" />     
        <param name="MaxBackupIndex" value="10" />     
        <layout class="org.apache.log4j.PatternLayout">     
            <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />     
        </layout>     
    </appender>     
       
    <appender name="activexAppender" class="org.apache.log4j.DailyRollingFileAppender">    
        <param name="File" value="E:/activex.log" />       
        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />       
        <layout class="org.apache.log4j.PatternLayout">     
         <param name="ConversionPattern"       
            value="[%d{MMdd HH:mm:ss SSS\} %-5p] [%t] %c{3\} - %m%n" />     
        </layout>       
    </appender>     
        
    <!-- 指定logger的設置,additivity指示是否遵循缺省的繼承機制-->     
    <logger name="com.runway.bssp.activeXdemo" additivity="false">     
        <priority value ="info"/>       
        <appender-ref ref="activexAppender" />       
    </logger>     
     
    <!-- 根logger的設置-->     
    <root>     
        <priority value ="debug"/>     
        <appender-ref ref="myConsole"/>     
        <appender-ref ref="myFile"/>        
    </root>     
</log4j:configuration>

 


 

3. FirstIbatis.xml映射文件,在src\com\ibatis目錄下

<?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="Ibatis">
 <typeAlias alias="ibatis" type="com.ibatis.FirstIbatis"/>
 
 <!-- my own sql start -->
 <select id="getIbatis2" resultClass="ibatis">
  select * from firstibatis
 </select>
 <!-- my own sql end -->
 
 <select id="getIbatis" parameterClass="java.lang.String" resultClass="ibatis">
  select id, name, age from firstibatis where name = #name#
 </select>
 
 <update id="updateIbatis" parameterClass="ibatis">
  UPDATE firstibatis SET name=#name#, age=#age# WHERE id = #id#
 </update>
 
 <insert id="insertIbatis" parameterClass="ibatis">
  INSERT INTO firstibatis (id, name,age) VALUES (#id#, #name#, #age#)
 </insert>
 
 <delete id="deleteIbatis" parameterClass="java.lang.String">
  delete from firstibatis where id = #value#
 </delete>
</sqlMap>


 

4. FirstIbatis.java, 在src/com/ibatis目錄下

package com.ibatis;

import java.io.Serializable;

public class FirstIbatis  implements Serializable{

  private static final long serialVersionUID = 4054639727225043549L;
  private int id;
  private String name;
  private int age;
  
  public FirstIbatis() {
   super();
  }
  
  public FirstIbatis(int id, String name, int age) {
   super();
   this.id = id;
   this.name = name;
   this.age = age;
  }

  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;
  }

  public int getAge() {
   return age;
  }

  public void setAge(int age) {
   this.age = age;
  }
  
  public String toString(){
   return id + " " + name + " " + age;
  }
}


 

5. TestIbatis.java, 在src/com/ibatis目錄下

package com.ibatis;
import java.io.Reader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.log4j.Logger;

import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;

public class TestIbatis {

  
  static Logger logger = Logger.getLogger(TestIbatis.class.getName());

  /**
   * @param args
   */
  public static void main(String[] args) {
   String path = System.getProperty("user.dir");
   System.out.println(path);
   //String resource =path + File.separator + "src" + File.separator + "SqlMapConfig.xml";
   String resource = "SqlMapConfig.xml";
   //sqlMap系統初始化完畢,開始執行update操作
   try {
    Reader reader = Resources.getResourceAsReader(resource);
    SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
    
    sqlMap.startTransaction();

//    Ibatis ibatis = new Ibatis();
//    ibatis.setId(new Integer(1));
//    ibatis.setName("Erica");
//    ibatis.setAge(new Integer(1));
//    sqlMap.insert("insertIbatis",ibatis);
    
    //增
    //Object[] arr = new Object[]{2, "hello", 23};
//    FirstIbatis obj = new FirstIbatis();
//    obj.setId(2);
//    obj.setName("hello");
//    obj.setAge(23);
    //FirstIbatis ibatis = (FirstIbatis)sqlMap.insert("insertIbatis", obj);
    
    //刪
//    int n = sqlMap.delete("deleteIbatis", "2");
//    if(n == 1) {
//     System.out.println("The record id of 2 is deleted!");
//    }
    
    //改
    FirstIbatis obj = new FirstIbatis();
    obj.setId(1);
    obj.setName("Erica");
    obj.setAge(23);
    int n = sqlMap.update("updateIbatis",obj);
    if(n == 1) {
     System.out.println("The record id of 1 is updated!");
    }
    
    //查
    //FirstIbatis ibatis = (FirstIbatis)sqlMap.queryForObject("getIbatis", "Erica");
    //System.out.println("Query for Erica: " + ibatis.toString());
    
    List list = (List)sqlMap.queryForList("getIbatis2");
    System.out.println(list.size() + list.toString());
    FirstIbatis ibatis = null;
    for(int i = 0; i < list.size(); i ++) {
     ibatis = (FirstIbatis)list.get(i);
     System.out.println("Query firstibatis for List: " + ibatis.toString());
    }
    
    
    sqlMap.commitTransaction();
   } catch (Exception e) {
    // TODO: handle exception
    //e.printStackTrace();
    logger.debug(e.toString());
   } 
  }

}

 

所需jar包:

        ibatis-2.3.4.726.jar,   log4j-1.2.1.6,   mysql-connector-java-5.0.4-bin.jar,   proxool-0.9.1.jar

 

完整實例下載:

        ibatis2.3.4.726增刪改查源碼實例.rar

 

 

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