`
lemo
  • 浏览: 92710 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SQL Map XML配置文件

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

<?xml version="1.0" encoding="UTF-8" ?>
 
 <!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 >


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

    iBATIS开发教程.docx

    SQL Map XML配置文件用于定义SQL Map的结构和关系。配置文件包括以下元素: 1. 元素:用于定义SQL Map的配置信息。 2. 元素:用于定义SQL Map的设置信息。 3. 元素:用于定义类型别名。 4. 元素:用于定义事务管理...

    sql-map-2.dtd和sql-map-config-2.dtd

    总结来说,"sql-map-2.dtd"和"sql-map-config-2.dtd"是Ibatis 2.x版本中非常关键的组件,它们为XML配置文件提供了结构化规则,使得开发人员能够编写出合法且易于维护的SQL映射文件和全局配置文件。理解并正确使用...

    iBATIS SQL Maps 开发指南

    #### 四、SQL Map XML 配置文件 iBATIS SQL Maps 使用 XML 文件进行配置,主要包括以下几个元素: - `&lt;properties&gt;`:用于设置环境变量或外部资源文件路径。 - `&lt;setting&gt;`:用于配置运行时的行为。 - `...

    ibatis开发和学习总结借鉴.pdf

    **SQL Map XML配置文件**:配置文件包含了数据库连接信息、SQL语句、结果映射等关键元素,是Ibatis运行的基础。 **配置SQL Map**:配置包括设置数据源、事务管理器等,确保Ibatis能够正确地与数据库交互。 **事务...

    iBATIS SQL Maps开发指南

    #### 四、SQL Map XML 配置文件详解 - **&lt;properties&gt; 元素**:用于定义外部属性,可以是环境变量或者配置文件中的属性。 - **&lt;setting&gt; 元素**:配置 SQL Map 的运行时行为,如缓存行为、事务管理等。 - **...

    iBATIS 帮助文档

    **概念**:SQL Map 是 iBATIS 提供的一种用于简化数据库操作的技术,通过简单的 XML 配置文件来实现 JavaBean 与 SQL 语句之间的映射。这种映射方式使得开发者无需编写复杂的 JDBC 代码即可完成对数据库的操作。 **...

    ibatis开发指南(中文版)

    - **iBATIS SQL Map** 是一种用于简化数据库访问的工具,它通过简单的XML配置文件将Java Bean与SQL语句进行映射,从而减少了编写数据库访问代码的工作量。 #### 二、SQL Map 概念 - **SQL Map** 的核心概念是将Java...

    ibatis 指导书 PDF

    #### 四、SQL Map XML 配置文件详解 iBATIS 使用 XML 文件来配置数据库连接、事务管理、SQL 映射等信息。配置文件的主要元素包括: 1. **`&lt;properties&gt;` 元素**:用于设置属性,可以是系统属性或者是外部文件中的...

    ibatis开发手册(pdf)

    #### 四、SQL Map XML 配置文件 - **&lt;properties&gt; 元素**:用于设置 SQL Map 的配置属性,如数据库连接信息等。 - **&lt;setting&gt; 元素**:用于配置 SQL Map 的运行时行为,例如日志级别、缓存策略等。 - **...

    iBATS文档

    **SQL Map XML 配置文件** 是 iBATS 中的核心配置文件之一,用于指定各种配置信息,包括属性设置、别名定义、事务管理器和数据源等。 ##### 《属性》元素 此元素用于定义全局的属性,这些属性可以在整个配置文件中...

    【Java-框架-Mybatis】(01) - 文件

    - SQL Map XML配置文件:这是Mybatis的核心配置,包含了数据库连接信息、映射文件路径、全局配置等。 - Mapper接口和Mapper XML文件:Mapper接口定义了数据库操作的方法,XML文件则包含了具体的SQL语句和结果映射...

    ibatis参考文档

    iBATIS DataMapper通过SQL Map XML配置文件来管理各种设置和SQL映射。以下是其中几个重要的元素: ##### 1. `&lt;properties&gt;` 元素 用于指定属性值,这些属性可以被其他元素引用。例如数据库连接信息可以通过这种...

    根据表自动生成代码java, generatorConfig.xml配置文件

    本文将重点讨论如何使用generatorConfig.xml配置文件来实现这个功能。 generatorConfig.xml是MyBatis Generator(MBG)工具的核心配置文件,它定义了生成代码的各项参数,包括数据源信息、目标文件位置、生成的Java...

    ibatis的sql-map dtd

    在Ibatis中,`sql-map`和`sql-map-config`是两个重要的XML配置文件,它们使用DTD(Document Type Definition)来定义其结构和规则。 DTD是XML文档类型定义,它定义了XML文档的合法构建块,包括元素、属性、实体等,...

    ibatis developer guide

    #### 三、SQL Map XML配置文件 - **元素**:用于定义全局属性,这些属性可以在整个配置文件中被引用,便于管理和维护。 - **元素**:用于配置iBATIS的行为设置,如缓存策略、日志级别等。 - **元素**:指定用于创建...

    Ibatis学习随笔

    1. SQL Map XML配置文件:这是Ibatis的核心,定义了SQL语句、参数映射和结果映射,使得SQL与业务代码解耦。 2. SqlSession接口:它是与数据库进行交互的主要接口,提供了执行SQL和管理事务的方法。 3. Mapper接口和...

    spring+ibatis的项目需要的jar包

    2. sqlmap-3.x.x.jar:包含了SQL Map XML配置文件解析所需的类。 此外,为了使Spring与iBatis整合,还需要以下的jar包: 1. spring-tx.jar:Spring的事务管理模块,对于数据库操作的事务控制至关重要。 2. spring-...

Global site tag (gtag.js) - Google Analytics