`
liulanghan110
  • 浏览: 1077873 次
  • 性别: 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-map dtd

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

    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_map教程

    最后,我们创建了一个配置文件,该文件配置了JDBC数据源和SQL映射,这是使用ibatis SQL Maps时的重要步骤。 通过这些步骤,初学者可以快速入门ibatis SQL Maps,并开始构建基于Java的应用程序。此外,ibatis SQL ...

    ibatis 连接字符串 SqlMapConfig.xml

    标题中的“ibatis 连接字符串 SqlMapConfig.xml”指的是使用iBATIS(一个轻量级的Java持久层框架)时,配置数据库连接的关键文件——SqlMapConfig.xml。这个文件是iBATIS的核心配置文件,它包含了数据源、事务管理器...

    Ibatis资料ibatai sql map iBATIS使用$和#的一些理解

    在使用iBATIS(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...

    ibatis学习总结

    iBATIS的配置文件主要包括SQL Map的配置,用于设定属性、JDBC DataSources和SQL Maps。配置文件通常为XML格式,用于集中管理不同DataSource的配置。iBATIS支持自己的SimpleDataSource、Jakarta DBCP以及任何可以通过...

    基于iBatis SQL Map的数据持久层实现应用研究.pdf

    iBatis SQL Map的核心是基于XML配置文件的映射技术,它允许开发者不必关心底层数据库的具体操作,只需通过操作Java对象和配置文件即可完成数据的CRUD操作(创建Create、读取Read、更新***e、删除Delete)。...

    iBATIS SQL Maps

    - **定义映射文件**:为了使用iBATIS进行数据库操作,需要定义SQL映射文件,通常命名为 `.xml` 文件。这些文件定义了SQL语句以及它们与Java对象之间的映射关系。 - **SQL语句类型**:iBATIS支持多种SQL语句类型,...

    ibatis配置文件

    每个映射文件中定义了一组SQL语句及其映射规则,是ibatis的核心组成部分之一。 #### 三、总结 通过对`sqlMapConfig.xml`文件的深入解析,我们不仅了解了ibatis配置文件的基本结构,还掌握了如何通过配置文件来调整...

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

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

    ibatis SQL Map PPt

    动态SQL是Ibatis的一大亮点,它允许我们在XML映射文件或Java接口方法中根据条件动态地构建SQL语句。通过使用`&lt;if&gt;`, `&lt;choose&gt;`, `&lt;when&gt;`, `&lt;otherwise&gt;`, `&lt;where&gt;`, `&lt;set&gt;`, `&lt;trim&gt;`, `&lt;foreach&gt;`等标签,我们...

    ibatis2.0+sqlserver2005环境搭建

    这个环境中,Ibatis通过SqlMapConfig.xml配置文件管理数据库连接,通过User.xml文件定义SQL映射,使得Java代码与SQL逻辑分离,提高了代码的可维护性和可扩展性。同时,通过JDBC进行数据访问,保持了与数据库的直接...

    iBATIS-SqlMaps2入门代码文档

    通过本文档的学习,你可以掌握如何使用iBATIS-SqlMaps2来进行数据库操作,包括创建配置文件、定义数据源、以及编写简单的映射文件等内容。此外,本文档还简要介绍了SQLMap的基本架构和设计理念,帮助开发者更好地...

    ibatis配置文件、映射文件详解

    `sqlMapConfig.xml`是ibatis框架的核心配置文件之一,它不仅定义了与数据库交互的基本配置,还涉及到了性能调优的关键设置。通过对这些配置项的理解和合理设置,可以显著提高应用程序的性能和稳定性。开发者应根据...

    iBATIS SQL Maps 开发指南

    1. XML配置文件:SQL Maps的配置文件以XML格式编写,包含数据源设置、事务管理、SQL语句定义等信息。 2. SQL映射语句:在XML文件中,每个SQL语句被封装为一个元素,可以是静态SQL或动态SQL,支持条件判断和循环结构...

    ibatis dtd文件

    总结起来,Ibatis的DTD文件是其框架核心的一部分,它们为XML配置文件设定了严格的语法规则,确保了XML文件的正确解析和执行。`sql-map-2.dtd`和`sql-map-config-2.dtd`分别关注SQL映射和配置的细节,使开发者能以...

    iBATIS-SqlMaps-2-快速入门教程.docx

    SQL Map 配置文件是 XML 文件,用于设置 iBATIS-SqlMaps-2 的配置信息。配置文件可以设置各种属性,JDBC DataSource 和 SQL Map。在配置文件中,可以方便地统一配置 DataSource 不同的实现。 知识点5:DataSource ...

Global site tag (gtag.js) - Google Analytics