Ibatis-2.3.4.726 增删改查

来源:互联网 发布:电脑刷机软件 编辑:程序博客网 时间:2024/04/29 14:07

1.  SqlMapConfig.xml    在src目录下

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfigPUBLIC "-//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 sqlMapPUBLIC "-//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

 

 

原创粉丝点击