`
liulanghan110
  • 浏览: 1063255 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

IBATIS学习之 SQL Map XML配置文件

阅读更多

SQL Map 使用 XML 配置文件统一配置不同的属性 , 包括 DATASOURCE 的详细配置信息 , SQL Map 和其他可选属性 , 如线程管理等 . 以下是 SQL Map 配置文件的一个例子 :

<?xml version="1.0" encoding="UTF-8" ?>
 2
<!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="sqlMapConfig.properties" />
         
         <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="${driver}"></property>
             <property name="JDBC.ConnectionURL" value="${url}" ></property>
                <property name="JDBC.Username" value="${username}" ></property>
                <property name="JDBC.Password" value="${password}" />
            </dataSource>
         </transactionManager>
         
        <sqlMap resource="com/ibatis/db/xml/User.xml" />
    </sqlMapConfig>

 

一 properties节点

SQL MAP 配 置文件拥有唯一的<properties>节点,用于在配置文件中使用标准的JAVA属性文件(name=value).这样做后,在属性文 件中定义的属性可以作为变量在SQL MAP配置文件及其包含的所有SQL MAP映射文件中引用.例如,如果属性文件中包含属性:

driver=com.mysql.jdbc.Driver

SQL MAP 配置文件及其每个映射文件都可以使用占位符${driver}来代表值com.mysql.jdbc.Driver.例如

<property name="JDBC.Driver" value="${driver}"></property>

这 个元素在开发,测试和部署各阶段都很有用.它可以使用在多个不同的环境中重新配置应用和使用自动生成工具(如ANT)变得容易.属性文件可以从类路径中加 载(使用resource),也可以从合法的URL中加载(使用url属性).例如,要加载固定路径的属性文件,使用:

<properties url= file:///c:/config/my.properties />

 

二 setting节点

setting 节点用于配置和优化SQLMapClient实例的各选项.<setting>节点本身及其所有的属性都是可选的.下表列出了setting节点支持的属性及其功能.

maxRequests
同 时执行 SQL 语句的最大线程数。大于这个值的线程将阻塞直到另一个线程执行完成。不同的 DBMS有不同的限制值,但任何数据库都有这些限制。通常这个值应该至少是maxTransactions(参见以下)的 10 倍,并且总 是大于 maxSessions 和maxTranactions。减小这个参数值通常能提高性能。

例如:maxRequests=“256”
缺省值:512

maxSessions

同 一时间内活动的最大 session 数。一个 session 可以maxSessions是代码请求的显式 session,也可以是当线程使用SqlMapClient 实例(即执行一条语句)自动获得的session。它应该总是大于或等于 maxTransactions 并小于 maxRequests。减小这个参数值通常能减少内存使用。

例如:maxSessions=“64”
缺省值:128

maxTransactions

同 时进入 SqlMapClient.startTransaction()的最大线程maxTransactions 数。大于这个值的线程将阻塞直到另一个线程退出。不同的 DBMS 有不同的限制值,但任何数据库都有这些限制。这个参数值应该总是小于或等于maxSessions 并总是远远小于 maxRequests。减小这个参数值通常能提高性能。

例如:maxTransactions=“16”
缺省值:32

cacheModelsEnabled

全局性地启用或禁用 SqlMapClient 的所有缓存cacheModelsEnabled model。调试程序时使用。

例如:cacheModelsEnabled=“true”
缺省值:true(启用)

lazyLoadingEnabled

全局性地启用或禁用SqlMapClient的所有延迟加载。lazyLoadingEnabled 调试程序时使用。
例子:lazyLoadingEnabled=“true”
缺省值:true(启用)


enhancementEnabled

全局性地启用或禁用运行时字节码增强,以优化访enhancementEnabled
问Java Bean属性的性能,同时优化延迟加载的性能。

例子:enhancementEnabled=“true”
缺省值:false(禁用)

useStatementNamespaces

如果启用本属性,必须使用全限定名来引用 mapped useStatementNamespaces
statement。Mapped statement 的全限定名由 sql-map 的名称和 mapped-statement 的名称合成。例如: queryForObject("sqlMapName.statementName");

例如:useStatementNamespaces=“false”
缺省值:false(禁用)

 

三 transactionManager节点

transactionManagerab 定义了ibatis的事务管理器,目前提供了以下几种选择:

1)  JDBC

通过传统JDBC Connection.commit/rollback实现事务支持.

2)  JTA

使用容器提供的JTA服务实现全局事务管理.

3)  EXTERNAL

外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制.此时ibatis将把所有事务委托给外部容器进行管理.此外,通过Spring等轻量级容量实现事务的配置化管理也是一个不错的选择.

 

dataSource 节点

dataSource 从属于 transactionManager, 用于设定ibatis运行期使用DataSource属性.

    type 属性: dataSource 元素的 type 属性指定了 dataSource 的实现类型.可选项目:

1)  SIMPLE:

SIMPLE ibatis 内置的 dataSource 实现,其中实现了一个简单的数据库连接池机制,对应 ibatis 实现类为

com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory.

JDBC 使用 数据库自己的事务(局部事务),connect.beginTranstion(), connect.commit()等.

2)  DBCP

基于Apache DBCP连接池组件实现的DataSource封装,当无容器提供DataSource服务时,建议使用该选项,对应ibatis实现类为

com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory.

JTA : 使用jta 事务管理器管理事务(全局事务),使用userTranstion对象.

3)  JNDI

使用J2EE容器提供的DataSource实现, DataSource将通过指定的JNDI Name从容器中获取.对应ibatis实现类为

com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory.

Ibatis 不控制事务,事务交由外部控制,一般在CTM,或spring托管事务中使用.

 

五 dataSource的子节点说明(SIMPLE&DBCP):
  JDBC.Driver  JDBC 驱动。 如:com.mysql.jdbc.Driver

  JDBC.ConnectionURL :
数据库URL。 如:jdbc:mysql://localhost/sample 如果用的是SQLServer JDBC Driver,需要在url后追加SelectMethod=Cursor以获得JDBC事务的多Statement支持。
  JDBC.Username:数据库用户名
  JDBC.Password  :数据库用户密码
  Pool.MaximumActiveConnections :数据库连接池可维持的最大容量。
  Pool.MaximumIdleConnections :数据库连接池中允许的挂起(idle)连接数。

 

       以上子节点适用于SIMPLE 和DBCP 模式,分别针对SIMPLE 和DBCP 模式的DataSource私有配置节点如下:

SIMPLE:

Pool.MaximumCheckoutTime
数据库联接池中,连接被某个任务所允许占用的最大时间,如果超过这个时间限定,连接将被强制收回。(毫秒)

Pool.TimeToWait
当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允许等待的最长时间。(毫秒)

Pool.PingQuery
数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。检测语句应该是一 个最简化的无逻辑SQL。如“select 1 from t_user”,如果执行此语句成功,连接池管理器将认为此连接处于可用状态

Pool.PingEnabled
是否允许检测连接状态。

Pool.PingConnectionsOlderThan
对持续连接时间超过设定值(毫秒)的连接进行检测。

Pool.PingConnectionsNotUsedFor
对空闲超过设定值(毫秒)的连接进行检测。

DBCP:

Pool.MaximumWait
当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允许等待的最长时间。(毫秒)

Pool.ValidationQuery
数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。检测语句应该是一个最简化的无逻辑SQL。如“select 1 from t_user”,如果执行此语句
成功,连接池管理器将认为此连接处于可用状态。

Pool.LogAbandoned
当数据库连接被废弃时,是否打印日志。

Pool.RemoveAbandonedTimeout
数据库连接被废弃的最大超时时间

Pool.RemoveAbandoned
当连接空闲时间超过RemoveAbandonedTimeout时,是否将其废弃。

JNDI 由于大部分配置是在应用服务器中进行,因此ibatis中的配置相对简
分别使用JDBC和JTA事务管理的JDNI配置:
使用JDBC事务管理的JNDI DataSource配置

< transactionManager  type ="JDBC"   >  
< dataSource  type ="JNDI" >  
< property  name ="DataSource"   
value ="java:comp/env/jdbc/myDataSource" />  
</ dataSource >  
</ transactionManager >


< tra
nsactionManager  type ="JTA"   >  
< property  name ="UserTransaction"   
value ="java:/ctx/con/UserTransaction" />  
< dataSource  type ="JNDI" >  
< property  name ="DataSource"   
value ="java:comp/env/jdbc/myDataSource" />  
</ dataSource > 

</transactionManager>

 

六 sqlMap节点

   sqlMap 节点指定了映射文件的位置,配置文件中可以定义多个sqlMap元素,以指定项目内所包含的所有映射文件.

分享到:
评论

相关推荐

    iBatis SQL Maps开发指南.pdf

    SQL Map XML配置文件 元素 元素 元素 元素 元素 元素 SQL Map XML映射文件 Mapped Statements Statement的类型 SQL 语句 自动生成的主键 存储过程 parameterClass parameterMap Inline Parameter简介 resultClass ...

    将SQl语句转换成Ibatis之Xml文件语句

    用Ibatis时,配置sql语句时候 如果直接从sql里面把语句拷出来,玩玩格式不严谨,我写了这个工具来帮助我们格式化sql语句

    iBATIS SQL Maps 开发指南

    SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...

    iBATIS SQL Maps 开发指南 Version 2.0

    SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...

    sql-map-2.dtd

    ibatis的dtd约束,版本2,xml文件中标签提示,网址:http://ibatis.apache.org/dtd/sql-map-2.dtd

    iBATIS_SQL_Maps_V2.0开发指南_ibatis_

    SQL Map 使用简单的 XML 配置文件将 Java Bean 映射成 SQL 语句,对比其他的数据库持续层和 ORM 框架(如 JDO 的实现, Hibernate 等), SQL Map 最大的优点在于它简单易学。要使用 SQL Map,只要熟悉Java Bean, ...

    ibatis sqlmap配置详解

    SqlMap的配置是iBatis中应用的核心。这部分任务占据了iBatis开发的...Sql Map配置文件是iBatis配置的核心,从数据库连接到执行SQL时使用的sqlMap文件都是通过此文件中的配置提供给框架的,它通常命名为sqlMapConfig.xml

    iBATIS介绍入门

    iBATIS是以SQL为中心的持久化层...iBATIS能将输入的普通POJO对象、Map、XML等映射到SQL的条件参数上,同时也可以将查询结果映射到普通POJO对象(集合)、Map、XML等上面。 iBATIS使用xml文件来映射这些输入以及输出。

    iBATIS-SqlMaps-2_cn.pdf

    SQL Map提供了一个简洁的框架,使用简单的XML描述文件将Java Bean,Map实现和基本数据类型的包装类

    iBATIS-SqlMaps-2_cn.rar

    SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...

    ibatis开发文档-技术文档

    一个pdf格式的ibatis中文开发文档 包括sql map的概念 sql map xml 的配置 sql map api 开发等....

    sql-map-config-2.dtd

    ibatis的xml文件对于这个xml文件的规制文件dtd文件

    ibatis 学习源码

    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd"&gt; cacheModelsEnabled="true" enhancementEnabled="true" lazyLoadingEnabled="true" ...

    ibatis dtd文件

    开发ibatis所需的dtd文件,校验xml文件的dtd文件

    ibatis完整学习资料(含最新jar)

    SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...

    iBATIS实战

    3.6.1 SQL Map配置文件 54 3.6.2 properties元素 55 3.6.3 settings元素 56 3.6.4 typeAlias元素 58 3.6.5 transactionManager元素 60 3.6.6 typeHandler元素 61 3.6.7 sqlMap元素 61 3.7 小结 62 第4章 使用已映射...

    ibatis开发指南(中文版)

    SQL Map使用简单的XML配置文件将Java Bean映射成SQL语句,对比其他的数据库持续层和ORM框架(如JDO的实现,Hibernate等),SQL Map最大的优点在于它简单易学。要使用SQL Map,只要熟悉Java Bean,XML和SQL,就能使您...

    让ibatis有提示信息

    如何让ibatis的xml配置文件有提示信息

Global site tag (gtag.js) - Google Analytics