其实Ibatis的文档里面已经讲得很详细,所以这里指总结一些简单的入门问题:
配置文件
    sql-map-config.xml
<!DOCTYPE sqlMapConfig PUBLIC
          "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      
          "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
  <properties resource="properties/database.properties"/>
  <settings cacheModelsEnabled="true" enhancementEnabled="false"
            maxSessions="64" maxTransactions="8" maxRequests="128" useStatementNamespaces="true"/>
  <transactionManager type="JDBC">
    <dataSource type="SIMPLE">
      <property value="${driver}" name="JDBC.Driver"/>
      <property value="${url}" name="JDBC.ConnectionURL"/>
      <property value="${username}" name="JDBC.Username"/>
      <property value="${password}" name="JDBC.Password"/>
      <property value="15" name="Pool.MaximumActiveConnections"/>
      <property value="15" name="Pool.MaximumIdleConnections"/>
      <property value="1000" name="Pool.MaximumWait"/>
    </dataSource>
  </transactionManager>
  <sqlMap resource="com/xxx/sql/Accout.xml"/>
</sqlMapConfig>
database.properties
####################################
# Database Connectivity Properties
####################################
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=
Accout.xml  (sqlmap)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//En" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="NS_Account">
    <typeAlias alias="Account" type="com.ibatis.domain.Accout"/>
    <resultMap id="AccountResult" class="Account">
        <result property="accountId" column="Account_ID"/>
        <result property="name" column="Name"/>
        <result property="password" column="Password"/>
        <result property="type" column="Type"/>
    </resultMap>
    <insert id="insert" parameterClass="Account">
        <![CDATA[
        insert into T_Admin_Account(
            Name, Password, Type, Account_ID
        ) values (
            #name#, #password#, #type#, #accountId#
        )
        ]]>
    </insert>
    <select id="findAll" resultMap="AccountResult" parameterClass="Account">
        <![CDATA[
        select * from T_Admin_Account
        order by Account_ID
        ]]>
    </select>
    <delete id="delete" parameterClass="Account">
        <![CDATA[
        delete  from T_Admin_Account
        where Account_ID = #accountId#
        ]]>
    </delete>
    <update id="update" parameterClass="Account">
        <![CDATA[
        update T_Admin_Account
        set Name = #name#, Password = #password#, Type = #type#
        where Account_ID = #accountId#
        ]]>
    </update>
</sqlMap>
取得sqlmapclient:
private static SqlMapClient sqlmapclient= null;
//
Reader reader = null;
try {
  reader = Resources.getResourceAsReader(
    "com/ibatis/domain/sql/sql-map-config.xml");
  sqlmapclient= SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
  e.printStackTrace();
}
 
在设置好这些东西后,使用类似上面的代码取得sqlmapclient之后就可以使用sqlmapclient进行数据库操作了。
应该注意到因为配置文件中使用了namespace(在<settings中设置了 useStatementNamespaces="true"/>),所以在sqlmapclient进行操作时要记住使用namespace。如:
sqlmapclient.insert("NS_Account.insert",new Acount());
这是为了避免sqlmap配置文件中出现相同名字的方法时产生冲突。
如果使用spring进行代码的组织,那么事情将变得更加简单,你只要在spring的配置文件里面使用
    <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
            <value>com/ibatis/domain/sql/sql-map-config.xml</value>
        </property>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
    </bean>
对sqlMapClient进行注册,然后注入到相应的dao里面就可以了,spring还提供了简便的SqlMapClientDaoSupport,这也会对你的程序很有帮助。
如果你只是想使用ibatis自己提供的dao框架也可以。为了使用dao框架,还需要另外的配置文件:
dao.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE daoConfig PUBLIC "-//iBATIS.com//DTD DAO Configuration 2.0//EN" "http://www.ibatis.com/dtd/dao-2.dtd">
<daoConfig>
    <!-- Example SQL Maps DAO Configuration -->
    <context>
        <transactionManager type="SQLMAP">
            <property name="SqlMapConfigResource"
                value="sql-map-config.xml" />
        </transactionManager>
        <dao interface="com.ln.dao.CategoryDao"
            implementation="com.ln.daoImpl.ibatis.CategoryDaoImplSqlMap" />
            <dao interface="com.ln.dao.CalDao"
            implementation="com.ln.daoImpl.ibatis.CalDaoImplSqlMap" />
    </context>
</daoConfig>
而且在你的dao interface中要继承com.ibatis.dao.client.Dao接口(这只是一个标志性借口,没有任何方法)
在程序中就可以使用:
        Reader reader = null;
        DaoManager daoManager=null;
        try {
          reader = Resources.getResourceAsReader(
            "com/ibatis/domain/sql/dao.xml");
          daoManager = DaoManagerBuilder.buildDaoManager(reader);
        } catch (Exception e) {
          e.printStackTrace();
        }
        daoManager.getDao(CalDao.class);
这样的程序来取得dao,这也能很好的把dao提供的方法与具体的实现分离开来。
在使用ibatis的dao框架时,最好在dao实现类中继承ibatis提供的SqlMapDaoTemplate ,它是dao框架提供的一个模版类,用来管理dao mapper框架的各个方面,也可以简化你的工作
public classCalDaoImpl extends SqlMapDaoTemplate implementsCalDao{
  publicCalDaoImpl (DaoManager daoManager) {
    super(daoManager);
  }
}
继承之后只用在实现一个带
DaoManager 参数的构造函数就可以了。这个构造函数并不需要手动调用,使用
daoManager.getDao(CalDao.class);来取得dao实例的时候,框架会自动进行调用。之后在你的daoImpl里面就可以直接使用queryForList等sqlmapclient提供的方法了
。
这样ibatis的介绍基本完成。
那为什么要使用Ibatis呢?原因很简单,它很好地屏蔽掉了Connection,statement,resultset等直接使用jdbc是很烦人的地方,又可以直接使用sql语句非常灵活地进行数据库操作(特别是配置文件中的动态sql语句更是足够的灵活),而且还提供了连接池,cache,事务管理等支持。使用起来简单而又强大
 
	posted on 2006-04-12 10:18 
OO 阅读(824) 
评论(0)  编辑  收藏  所属分类: 
框架、工具的使用