到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comwww.matrix.org.cn无关,不对该信息负责.通过http://www.matrix.org.cn//resource/article/2006-10-16/iBatis_c105cf74-5cde-11db-a5c2-7f23a8944cb0.html访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
iBatis配置与应用
作者: 来源:www.matrix.org.cn  发布时间:2006-10-18 12:58:45.203

一.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

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

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读