zoukankan      html  css  js  c++  java
  • ibatis学习二入门之配置文件

           继续学习ibatis,还是代码+注释+说明的简单方式。

            ibatis的SqlMapConfig.xml文件的配置

     1 <?xml version="1.0" encoding="UTF-8" ?>  
     2 <!DOCTYPE sqlMapConfig        
     3     PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"        
     4     "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">  
     5 <sqlMapConfig>  
     6     
     7     <!-- cacheModelsEnabled: 是否启用SqlMapClient上的缓存机制。 建议设为"true" -->
     8     <!-- enhancementEnabled: 是否针对POJO启用字节码增强机制以提升getter/setter的调用效能,避免Reflect所带来的性能开销。同时,这也为Lazy Loading带来提升。 建议设为"true"  -->
     9     <!-- lazyLoadingEnabled: 是否使用延迟加载机制,建议设置true -->
    10     <!-- errorTracingEnabled: 是否启用错误日志,在开发时设置为"true"可方便调试 -->
    11     <!-- maxRequests: 最大并发请求数(Statement并发数) -->
    12     <!-- maxSessions: 最大Session数。即当前最大允许的并发SqlMapClient数  -->
    13     <!-- maxTransactions: 最大并发事物数,应满足  maxTransactions < maxSessions < maxRequests -->
    14     <!-- useStatementNamespaces: 是否使用Statement命名空间。 这里的命名空间指的是映射文件中,sqlMap节的namespace属性,如在上例中针对user表的映射文件sqlMap节点: <sqlMap namespace="User"> 
    15                               这里指定了此sqlMap节点下定义的操作均属于"User"命名空间。 在useStatementNamespaces="true"的情况下,Statement调用需追加命名空间,如:sqlMap.update("User.findUserById", 1); 
    16                             否则直接通过Statement名称调用即可,如: sqlMap.update("findUserById",1); 但请注意此时需要保证所有映射文件中,Statement定义无重名。 -->
    17     <settings
    18         cacheModelsEnabled="true"  
    19         enhancementEnabled="true"
    20         lazyLoadingEnabled="true"
    21         errorTracingEnabled="true"
    22         maxRequests="30"
    23         maxSessions="10"
    24         maxTransactions="5"
    25         useStatementNamespaces="false"
    26     />
    27     
    28     <!-- transactionManager 节点定义了ibatis 的事务管理器,目前提供了以下几种选择:JDBC、JTA、EXTERNAL -->
    29     <!-- JDBC: 通过传统JDBC Connection.commit/rollback实现事务支持 -->
    30     <!-- JTA: 使用容器提供的JTA服务实现全局事务管理 -->
    31     <!-- EXTERNAL: 外部事务管理,如在EJB中使用ibatis,通过EJB的部署配置即可实现自动的事务管理机制。此时ibatis 将把所有事务委托给外部容器进行管理。
    32                                此外,通过Spring 等轻量级容器实现事务的配置化管理也是一个不错的选择 -->
    33     <properties resource="jdbc.properties" />
    34     <transactionManager type="JDBC">
    35         <!-- type: dataSouce的实现类型。可选值: SIMPLE、DBCP、JNDI -->
    36         <!-- SIMPLE:SIMPLE是ibatis内置的dataSource实现,其中实现了一个简单的数据库连接池机制, 对应ibatis 实现类为
    37               com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory -->
    38         <!-- DBCP: 基于Apache DBCP 连接池组件实现的DataSource 封装,当无容器提供DataSource 服务时,建议使用该选项,对应ibatis 实现类为
    39               com.ibatis.sqlmap.engine.datasource.DbcpDataSourceFactory -->
    40         <!-- JNDI: 使用J2EE 容器提供的DataSource 实现,DataSource 将通过指定的JNDI Name 从容器中获取。对应ibatis 实现类为
    41               com.ibatis.sqlmap.engine.datasource.JndiDataSourceFactory -->
    42         <dataSource type="SIMPLE">  
    43             <property name="JDBC.Driver" value="${jdbc.driverClassName}" />
    44             <property name="JDBC.ConnectionURL" value="${jdbc.url}" />
    45             <property name="JDBC.Username" value="${jdbc.username}" />  
    46             <property name="JDBC.Password" value="${jdbc.password}" />  
    47             
    48 <!-- 数据库连接池可维持的最大容量 --> 49 <property name="Pool.MaximumActiveConnections" value="10"/> 50 <!-- 数据库连接池中允许的挂起(idle)连接数 --> 51 <property name="Pool.MaximumIdelConnections" value="5"/> 52 <!-- 数据库联接池中,连接被某个任务所允许占用的最大时间,如果超过这个时间限定,连接将被强制收回。(毫秒) --> 53 <property name="Pool.MaximumCheckoutTime" value="12000"/> 54 <!-- 当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允许等待的最长时间。(毫秒) --> 55 <property name="Pool.TimeToWait" value="600"/> 56 <!-- 数据库连接状态检测语句。某些数据库在连接在某段时间持续处于空闲状态时会将其断开。而连接池管理器将通过此语句检测池中连接是否可用。 57 检测语句应该是一个最简化的无逻辑SQL。如“select 1 from t_user”,如果执行此语句成功,连接池管理器将认为此连接处于可用状态 --> 58 <property name="Pool.PingQuery" value="select 1 from USER"/> 59 <!-- 是否允许检测连接状态 --> 60 <property name="Pool.PingEnabled" value="true"/> 61 <!-- 对持续连接时间超过设定值(毫秒)的连接进行检测 --> 62 <property name="Pool.PingConnectionsOlderThan" value="1"/> 63 <!-- 对空闲超过设定值(毫秒)的连接进行检测 --> 64 <property name="Pool.PingConnectionsNotUsedFor" value="1"/> 65 </dataSource> 66 </transactionManager> 67 68 <!-- sqlMap 节点指定了映射文件的位置,配置中可出现多个sqlMap 节点,以指定项目内所包含的所有映射文件 --> 69 <sqlMap resource="com/si/sqlMap/User.xml" /> 70 </sqlMapConfig>

           上面的dataSource为type=“SIMPLE”时的配置。type为DBCP时

     1 <!-- 当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,此时线程将进入等待状态,直到池中出现空闲连接。此参数设定了线程所允许等待的最长时间。(毫秒) -->
     2             <property name="Pool.MaximumWait" value="5000"/>
     3             <!-- 数据库连接状态检测语句 -->
     4             <property name="Pool.ValidationQuery" value="10"/>
     5             <!-- 当数据库连接被废弃时,是否打印日志 -->
     6             <property name="Pool.LogAbandoned" value="10"/>
     7             <!-- 数据库连接被废弃的最大超时时间 -->
     8             <property name="Pool.RemoveAbandonedTimeout" value="10"/>
     9             <!-- 当连接空闲时间超过RemoveAbandonedTimeout时,是否将其废弃 -->
    10             <property name="Pool.RemoveAbandoned" value="10"/>

          type为JNDI时

    1 <transactionManager type="JDBC" >
    2       <dataSource type="JNDI">
    3         <property name="DataSource" value="java:comp/env/jdbc/myDataSource"/>
    4       </dataSource>
    5     </transactionManager>
  • 相关阅读:
    随笔
    转:windows 下 netsh 实现 端口映射(端口转发)
    2015年01月01日:新年第一天:happy new year to myself
    谨记一次问题排查经历
    新机器,分区为NTFS, 安装 Windows XP、Windows Server 2003 时蓝屏问题,修改为 FAT32 即可
    Oracle 11g 的bug?: aix 上,expdp 11.2.0.1 导出,impdp 11.2.0.3 导入,Interval 分区的 【Interval】 分区属性成了【N】
    Cursor for loop in Oracle
    Oracle date 详解
    oracle中to_timestamp和to_date什么区别
    Oracle FM FM09999999 确保8位数字 即使全是0
  • 原文地址:https://www.cnblogs.com/waimai/p/2835925.html
Copyright © 2011-2022 走看看