iBatis配置与应用
yigui2001 发表于 2006-10-16 14:22:52作者:Arom_chen 来源:参照ibatis Guide整理
评论数:11 点击数:12,678 投票总得分:3 投票总人次:1
关键字:iBatis;数据库;持久层;配置;应用
一.iBatis基础配置
1.1. 下载iBatis驱动组件
下载压缩文件包:iBATIS_DBL-2.1.7.597.zip
需用的:ibatis-common-2.jar
ibatis-dao-2.jar
ibatis-sqlmap-2.jar
1.2. SqlMapConfig.xml
注意点:1. maxRequests >= maxSessions > maxTransactions
2. useStatementNamespaces节点:对应于映射文件中的namespace属性,当此节点为true的时候,Statement调用需要追加命名空间。当此节点为false的时候,则需保证所有的映射文件中,Statement定义无重名。
1.3. POJO文件
1.4. 映射文件
二.iBatis基础组件与操作
1. XmlSqlMapClientBuilder
2.0版本后引入,以替代XmlSqlMapBuilder。作用是根据配置文件创建SqlMapClient实例。2.7版本中好像找不到了!
2. SqlMapClient
提供数据操作的基础平台,线程安全
SqlMapClient基本操作:
数据写入(Insert,Update,Delete)
数据查询
在指定对象中存放查询结果
执行批量查询
查询指定范围内的数据
结合RowHandler查询
分页查询
基于Map的批量查询
数据写入(Insert):
数据查询:
其他的操作也是基本上根据上面两种操作变化而来!
三.iBatis高级特性
3.1. 数据关联
3.2. 延迟加载
3.3. 动态映射
注意:在第一个条件成立的时候不会加AND前缀。
3.4. 事务管理
1.1. 下载iBatis驱动组件
下载压缩文件包:iBATIS_DBL-2.1.7.597.zip
需用的:ibatis-common-2.jar
ibatis-dao-2.jar
ibatis-sqlmap-2.jar
1.2. SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<sqlMapConfig>
<settings cacheModelsEnabled="true“ enhancementEnabled="true“ lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="false"
/>
<transactionManager type="JDBC">
<dataSource type="SIMPLE">
<property name="JDBC.Driver" value="org.gjt.mm.mysql.Driver"/>
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/ibatissample"/>
<property name="JDBC.Username" value="root"/>
<property name="JDBC.Password" value="chenyan"/>
<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 t_user"/>
<property name="Pool.PingEnabled" value="false"/>
<property name="Pool.PingConnectionsOlderThan" value="1"/>
<property name="Pool.PingConnectionsNotUsedFor" value="1"/>
</dataSource>
</transactionManager>
<sqlMap resource="hs/com/ibatis/User.xml"/>
</sqlMapConfig>
注意点:1. maxRequests >= maxSessions > maxTransactions
2. useStatementNamespaces节点:对应于映射文件中的namespace属性,当此节点为true的时候,Statement调用需要追加命名空间。当此节点为false的时候,则需保证所有的映射文件中,Statement定义无重名。
1.3. POJO文件
package hs.com.ibatis.POJO;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String name;
private Integer sex;
/** default constructor */
public User() {}
public Integer getId() {
return this.id;}
public void setId(Integer id) {
this.id = id;}
public String getName() {
return this.name;}
public void setName(String name) {
this.name = name;}
public Integer getSex() {
return this.sex;}
public void setSex(Integer sex) {
this.sex = sex;}
}
1.4. 映射文件
<?xml version="1.0" encoding="UTF-8"?>
<sqlMap namespace="User">
<typeAlias alias="user" type="hs.com.ibatis.POJO.User"/>
<select id="getUser“ parameterClass="java.lang.String“ 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>
<insert id="insertUser“ parameterClass="user">
INSERT INTO t_user ( name, sex) VALUES ( #name#, #sex#)
</insert>
<delete id="deleteUser“ parameterClass="java.lang.String">
delete from t_user where id = #value#
</delete>
</sqlMap>
二.iBatis基础组件与操作
1. XmlSqlMapClientBuilder
2.0版本后引入,以替代XmlSqlMapBuilder。作用是根据配置文件创建SqlMapClient实例。2.7版本中好像找不到了!
2. SqlMapClient
提供数据操作的基础平台,线程安全
String resource ="hs/com/ibatis/SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
//XmlSqlMapClientBuilder xmlBuilder = new XmlSqlMapClientBuilder();
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
SqlMapClient基本操作:
数据写入(Insert,Update,Delete)
数据查询
在指定对象中存放查询结果
执行批量查询
查询指定范围内的数据
结合RowHandler查询
分页查询
基于Map的批量查询
数据写入(Insert):
sqlMap.startTransaction();
Product product = new Product();
product.setId (1);
product.setDescription (“Arom_chen”);
int rows = sqlMap.insert (“insertProduct”, product);
sqlMap.commitTransaction();
数据查询:
sqlMap.startTransaction();
Integer key = new Integer (1);
Product product = (Product)sqlMap.queryForObject
(“getProduct”, key);
sqlMap.commitTransaction();
其他的操作也是基本上根据上面两种操作变化而来!
三.iBatis高级特性
3.1. 数据关联
3.2. 延迟加载
3.3. 动态映射
<select id="getUsers"
parameterClass="user"
resultMap="get-user-result">
Select id, name, sex from t_user
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="name">
(name like #name#)
</isNotEmpty>
<isNotEmpty prepend="AND" property="address">
(address like #address#)
</isNotEmpty>
</dynamic>
</select>
注意:在第一个条件成立的时候不会加AND前缀。
3.4. 事务管理
附(mysql表):CREATE TABLE t_address (id int(10) not null,
country varchar(100) not null,
city varchar(100),
town varchar(100),
number int(10),
PRIMARY KEY(id))
TYPE=myisam;
CREATE TABLE t_user (id int(10) not null,
name varchar(100) not null,
sex int(10),
PRIMARY KEY(id))
TYPE=myisam;
本页页面地址:
用户评论列表
fdfggdfgdfgfdgdg
真不知道该怎么评价。官方有中文的文档。你写得也简单了一些吧!
真不知道该怎么评价。官方有中文的文档。你写得也简单了一些吧!
嗯,简洁。不过对于初学者来说,还是摸不着头脑
我觉得大家如果按照这样的配置去写的话,不用修改代码,
就可以直接跑通了。所以看起来好像没什么东西。
因为其中的很多配置都没讲到,但不影响程序运行阿!
讲的有点乱,没有讲清楚整体的各个部分的关系
正在找这个东东,太好了,
hao a hao ahao a hao ahao a hao a
不胜感激!!!!!!
bu ming que
发表我的评论 (评论可增加个人积分...)
| 用户*: | E-mail: | ||
| 评论内容*: 支持BBCode |
|||
| 算术题*: | + = | ||


ICP:?B2-20040367