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
完整实例下载: