编写iBATIS的步骤:
1.下载iBATIS的jar包
2.将连入数据库的驱动和ibatis的jar包导入工程
3.编写iBATIS的配置文件
<?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">
<!-- "./sql-map-config-2.dtd" -->
<sqlMapConfig>
<properties resource="config/SqlMap.properties" />
<settings cacheModelsEnabled="true"
enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false" />
<!-- maxrequest 同时执行sql语句的最大条数最好至少是maxTransactions的10倍数 而且大于maxSession
maxTransactions 同时进入SqlMapClient.startTransaction()的 最大线程数
maxSession 同一时间段内 最大session数 大于maxTransactions 小于maxRequest
cacheModelsEnabled 全局性的启用或者禁用SqlMapClient的所有缓存model true为启用默认为启用
lazyLoadingEnabled 全局性的启用或者禁用SqlMapClient的所有延迟加载,调试程序使用 true为启用默认为启用
enhancementEnabled 全局性的启用或者禁用运行时字节码增强 false为禁用 默认为禁用
useStatementNamespaces 如果启用本属性,必须使用权限定名来引用mappedstatement。
这是由sql-map的名称和mapped-statment的名称合成,默认为false 禁用。
-->
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}"/>
<property name="JDBC.Username" value="${username}"/>
<property name="JDBC.Password" value="${password}"/>
<!-- transactionManager元素为SQL Map配置事务管理服务
type指定所使用的管理器类型可以为JDBC JTA EXTERNAL
datasource元素是transactionManager的一部分
为SQL Map数据源设置了一些列参数。
dataSource type为 是根据选择链接数据库的方式决定的
peoperty中的JDBC.Driver为 驱动
ConnectionURL为链接地址
Username为访问数据库的用户名
Password为访问数据库的密码
-->
<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 sample" />
<property name="Pool.PingEnabled" value="false" />
<property name="Pool.PingConnectionsOlderThan" value="1" />
<property name="Pool.PingConnectionsNotUsedFor" value="1" />
<!-- MaximumIdleConnections数据库连接池中允许的挂起(idle)连接数
MaximumCheckoutTime数据库联接池中,连接被某个任务所允许占用的最大时间,
如果超过这个时间限定,连接将被强制收回。(毫秒)
TimeToWait当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,
此时线程将进入等待状态,直到池中出现空闲连接。
此参数设定了线程所允许等待的最长时间。(毫秒)
PingQuery数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲
状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。
检测语句应该是一个最简化的无逻辑SQL。如“select 1 from t_user”,
如果执行此语句成功,连接池管理器将认为此连接处于可用状态
PingEnabled是否允许检测连接状态。
PingConnectionsOlderThan对持续连接时间超过设定值(毫秒)的连接进行检测。
Pool.PingConnectionsNotUsedFor对空闲超过设定值(毫秒)的连接进行检测。
-->
</dataSource>
</transactionManager>
<sqlMap resource="config/Tuser.xml" />
<!-- sqlmap源的 位置"包名/ .xml注意包中间有.的时候用/代替" -->
</sqlMapConfig>
4.编写持久化类的配置文件
<?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="Tuser">
<typeAlias alias="user" type="com.webwork.Tuser"/>
<!-- sql语句 <![CDATA[可以避免SQL 中与XML 规范相冲突的字符对XML映射文件的合法性造成影响。
-->
<select id="getUser" parameterClass="java.lang.String" resultClass="user">
<!-- parameterClass是参数类型
resultClass是结果的类型
如果sql语句包括参数, 那么格式是#id# -->
<![CDATA[ select name,sex from t_user where name = #name#]]>
</select>
<select id="getAllUser" resultClass="user">
<![CDATA[ select name, sex from t_user where name = #name# ]]>
</select>
<update id="updateUser" parameterClass="user">
<![CDATA[ UPDATE t_user SET name=#name#, sex=#sex# WHERE id = #id# ]]>
</update>
<delete id="deleteUser" parameterClass="user">
delete from t_user where id=#id#
</delete>
<insert id="insertUser" parameterClass="user">
<![CDATA[ insert into t_user (id,name,sex,age) values (#id#,#name#,#sex#,#age#) ]]>
</insert>
</sqlMap>
5.测试(数据库以设计)
String resource="config/SqlMapConfig.xml";
Reader reader=Resource.getResourceAsReader(resource);
SqlMapClient client=SqlMapClientBuilder.builderSqlMapClient(reader);
sqlMap.startTransaction();
Tuser user=new Tuser();
user.setId(3);
user.setAge(15);
user.setName("arei");
user.setSex(0);
sqlMap.insert("insertUser", user);
sqlMap.commitTransaction();
sqlMap.endTransaction();