iBATIS sqlMapConfig配备详解
iBATIS sqlMapConfig配置详解?xml?version1.0?encodingUTF-8??????!DOCTYPE?sqlMapConfig???????
iBATIS sqlMapConfig配置详解
<?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="properties/database.properties"/>??????可将SqlMap中的<property?/>内容写到配置文件中,从此处引用。??????SQL?Map配置文件及其每个映射文件都可以使用占位符${}???-->????????<settings???????????cacheModelsEnabled="true"???????????enhancementEnabled="true"???????????lazyLoadingEnabled="true"???????????errorTracingEnabled="true"???????????maxRequests="32"???????????maxSessions="10"???????????maxTransactions="5"???????????useStatementNamespaces="false"???????/>????????<!--???????<settings?????????????????????cacheModelsEnabled="true"???????????是否启用SqlMapClient上的缓存机制。???????????建议设为"true"?????????????????????enhancementEnabled="true"???????????是否针对POJO启用字节码增强机制以提升??????????getter/setter的调用效能,避免使用Java???????????Reflect所带来的性能开销。???????????同时,这也为Lazy?Loading带来了极大的性能??????????提升。???????????建议设为"true"?????????????????????lazyLoadingEnabled="true"???????????是否启用延迟加载机制,建议设为"true"?????????????????????errorTracingEnabled="true"???????????是否启用错误日志,在开发期间建议设为"true"??????????以方便调试?????????????????????maxRequests="32"???????????最大并发请求数(Statement并发数)?????????????????????maxSessions="10"???????????最大Session数。即当前最大允许的并发??????????SqlMapClient?数。???????????maxSessions设定必须介于??????????maxTransactions和maxRequests之间,即???????????maxTransactions<maxSessionsmaxSessions=<maxRequests?????????????????????maxTransactions="5"???????????最大并发事务数?????????????????????useStatementNamespaces="false"???????????是否使用Statement命名空间。???????????这里的命名空间指的是映射文件中,?sqlMap节点??????????的namespace属性,如在上例中针对t_user??????????表的映射文件sqlMap节点:???????????<sqlMap?namespace="User">???????????这里,指定了此sqlMap节点下定义的操作均从??????????属于"User"命名空间。???????????在useStatementNamespaces="true"的情??????????况下,Statement调用需追加命名空间,如:??????????sqlMap.update("User.updateUser",user);???????????否则直接通过Statement名称调用即可,如:???????????sqlMap.update("updateUser",user);???????????但请注意此时需要保证所有映射文件中,??????????Statement定义无重名。???????/>????????????-->?????????<transactionManager?type="JDBC"?commitRequired="false">?????????<!--??????????<transationManager>元素让您为SQL?Map配置事务管理服务。??????????属性type指定所使用的事务管理器类型。??????????这个属性值可以是一个类名,也可以是一个别名。??????????包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。????????????????????JDBC:通过常用的Connection?commit()和rollback()方法,让JDBC管理事务。????????????????????JTA:本事务管理器使用一个JTA全局事务,使SQL?Map的事务包括在更大的事务范围内,???????????????这个更大的事务范围可能包括了其他的数据库和事务资源。???????????????这个配置需要一个UserTransaction属性,以便从JNDI获得一个UserTransaction。????????????????????EXTERNAL:这个配置可以让您自己管理事务。您仍然可以配置一个数据源,????????????????????但事务不再作为框架生命周期的一部分被提交或回退。????????????????????这意味着SQL?Map外部应用的一部分必须自己管理事务。????????????????????这个配置也可以用于没有事务管理的数据库(例如只读数据库)。????????-->??????????<dataSource?type="DBCP">????<!--??????????<datasource>是<transactionManager>的一部分,??????????为SQL?Map数据源设置了一系列参数。??????????目前SQL?Map架构只提供三个DataSource?Factory,但您也可以添加自己的实现。????????????????????SIMPLE:?SimpleDataSourceFactory为DataSource提供了一个基本的实现,??????????????????适用于在没有J2EE容器提供DataSource的情况。??????????????????它基于iBatis的SimpleDataSource连接池实现。???????????????????????????????????????????????DBCP:?DbcpDataSourceFactory实现使用Jakarta?DBCP??????????????(Database?Connection?Pool)的DataSource?API提供连接池服务。??????????????适用于应用/Web容器不提供DataSource服务的情况,或执行一个单独的应用。???????????????????????JNDI:?JndiDataSourceFactory在应用容器内部从JNDI?Context中???????????????查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连???????????????接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。???????????????使用JDBC?DataSource的标准方法是通过JNDI来查找。??-->????????????<property?name="JDBC.Driver"???????????????????value="net.sourceforge.jtds.jdbc.Driver"/>????????<property?name="JDBC.ConnectionURL"???????????????????value="jdbc:jtds:sqlserver://127.0.0.1:1433/EXTFFM"/>????????<property?name="JDBC.Username"?value="sa"/>????????<property?name="JDBC.Password"?value="sa"/>?????<!--????????????SQL?Map配置文件拥有唯一的<properties>元素,????????????用于在配置文件中使用标准的Java属性文件(name=value)。????????????这样做后,在属性文件中定义的属性可以作为变量在SQL?Map配置文件????????????及其包含的所有SQL?Map映射文件中引用。????????????????????????例如,如果属性文件中包含属性:????????????driver=org.hsqldb.jdbcDriver????????????SQL?Map配置文件及其每个映射文件都可以使用占位符${driver}????????????来代表值org.hsqldb.jdbcDriver。例如:????????????<property?name="JDBC.Driver"?value="${driver}"/>????????-->??????????????????<property?name="Pool.MaximumActiveConnections"?value="10"/>????????<!--?数据库连接池可维持的最大容量。缺省值:?10?-->????????????????<property?name="Pool.MaximumIdleConnections"?value="5"/>?????????<!--?数据库连接池中允许的挂起(idle)连接数。缺省值:?5?-->?????????????????<property?name="Pool.TimeToWait"?value="500"?/>??<!--????????????当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,???????????此时线程将进入等待状态,直到池中出现空闲连接。???????????此参数设定了线程所允许等待的最长时间(单位:毫秒)缺省值:?10???-->??????????<property?name="Pool.MaximumCheckoutTime"?value="120000"/>????????????????<!--???????????数据库联接池中,连接被某个任务所允许占用的最大时间,??????????如果超过这个时间限定,连接将被强制收回(单位:毫秒)。??????????缺省值:?20000???-->????????????????????????????????????<property?name="Pool.PingQuery"?value="seslct?1?from?FFM_Sequence"?/>???<!--??????????数据库连接状态检测语句。??????????某些数据库在连接在某段时间持续处于空闲状态时会将其断开。??????????而连接池管理器将通过此语句检测池中连接是否可用。??????????它对性能的影响较大,应小心使用。检测语句应该是一个最简化的无逻辑SQL,??????????如:select?1?from?dual缺省值:?N/A??-->?????????????????????<property?name="Pool.PingEnabled"?value="false"?/>?????????<!--?是否允许检测连接状态。缺省值:?false?-->?????????????????<property?name="Pool.PingConnectionsOlderThan"?value="1"?/>?????????<!--?对持续连接时间超过设定值(毫秒)的连接进行检测。缺省值:?0?-->????????????????<property?name="Pool.PingConnectionsNotUsedFor"?value="1"?/>????????<!--?对空闲超过设定值(毫秒)的连接进行检测。缺省值:?0?-->??????</dataSource>????</transactionManager>??????<sqlMap?resource="com/witnessj/ffm/domain/IBatisSqlMap/SequenceSqlMap.xml"/>??????<!--??????????<sqlMap>元素用于包括SQL?Map映射文件和其他的SQL?Map配置文件。??????????每个SqlMapClient对象使用的所有SQL?Map映射文件都要在此声明。??????????映射文件作为stream?resource从类路径或URL读入。??????????您必须在这里指定所有的SQL?Map文件。????????????????????List?more?here...????????<sqlMap?resource="com/mydomain/data/Order.xml"/>????????<sqlMap?resource="com/mydomain/data/Documents.xml"/>??????-->????</sqlMapConfig>?