当前位置: 代码迷 >> SQL >> iBATIS sqlMapConfig配备详解
  详细解决方案

iBATIS sqlMapConfig配备详解

热度:89   发布时间:2016-05-05 13:45:46.0
iBATIS sqlMapConfig配置详解
  1. <?xml?version="1.0"?encoding="UTF-8"??>??
  2. ??
  3. <!DOCTYPE?sqlMapConfig????????
  4. ????PUBLIC?"-//ibatis.apache.org//DTD?SQL?Map?Config?2.0//EN"????????
  5. ????"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">??
  6. ??
  7. <sqlMapConfig>??
  8. ??
  9. ?<!--???
  10. ????<properties?resource="properties/database.properties"/>??
  11. ????可将SqlMap中的<property?/>内容写到配置文件中,从此处引用。??
  12. ????SQL?Map配置文件及其每个映射文件都可以使用占位符${}??
  13. ?-->??
  14. ??
  15. ????<settings???
  16. ????????cacheModelsEnabled="true"???
  17. ????????enhancementEnabled="true"???
  18. ????????lazyLoadingEnabled="true"???
  19. ????????errorTracingEnabled="true"???
  20. ????????maxRequests="32"???
  21. ????????maxSessions="10"???
  22. ????????maxTransactions="5"???
  23. ????????useStatementNamespaces="false"???
  24. ????/>??
  25. ??????
  26. <!--???
  27. ????<settings???
  28. ??????????
  29. ????????cacheModelsEnabled="true"???
  30. ????????是否启用SqlMapClient上的缓存机制。???
  31. ????????建议设为"true"???
  32. ??????????
  33. ????????enhancementEnabled="true"???
  34. ????????是否针对POJO启用字节码增强机制以提升??
  35. ????????getter/setter的调用效能,避免使用Java???
  36. ????????Reflect所带来的性能开销。???
  37. ????????同时,这也为Lazy?Loading带来了极大的性能??
  38. ????????提升。???
  39. ????????建议设为"true"???
  40. ??????????
  41. ????????lazyLoadingEnabled="true"???
  42. ????????是否启用延迟加载机制,建议设为"true"???
  43. ??????????
  44. ????????errorTracingEnabled="true"???
  45. ????????是否启用错误日志,在开发期间建议设为"true"??
  46. ????????以方便调试???
  47. ??????????
  48. ????????maxRequests="32"???
  49. ????????最大并发请求数(Statement并发数)???
  50. ??????????
  51. ????????maxSessions="10"???
  52. ????????最大Session数。即当前最大允许的并发??
  53. ????????SqlMapClient?数。???
  54. ????????maxSessions设定必须介于??
  55. ????????maxTransactions和maxRequests之间,即???
  56. ????????maxTransactions<maxSessionsmaxSessions=<maxRequests???
  57. ??????????
  58. ????????maxTransactions="5"???
  59. ????????最大并发事务数???
  60. ??????????
  61. ????????useStatementNamespaces="false"???
  62. ????????是否使用Statement命名空间。???
  63. ????????这里的命名空间指的是映射文件中,?sqlMap节点??
  64. ????????的namespace属性,如在上例中针对t_user??
  65. ????????表的映射文件sqlMap节点:???
  66. ????????<sqlMap?namespace="User">???
  67. ????????这里,指定了此sqlMap节点下定义的操作均从??
  68. ????????属于"User"命名空间。???
  69. ????????在useStatementNamespaces="true"的情??
  70. ????????况下,Statement调用需追加命名空间,如:??
  71. ????????sqlMap.update("User.updateUser",user);???
  72. ????????否则直接通过Statement名称调用即可,如:???
  73. ????????sqlMap.update("updateUser",user);???
  74. ????????但请注意此时需要保证所有映射文件中,??
  75. ????????Statement定义无重名。???
  76. ????/>?????
  77. ??????
  78. ?-->??
  79. ??
  80. ???
  81. ??<transactionManager?type="JDBC"?commitRequired="false">??
  82. ????
  83. ???<!--??
  84. ????????<transationManager>元素让您为SQL?Map配置事务管理服务。??
  85. ????????属性type指定所使用的事务管理器类型。??
  86. ????????这个属性值可以是一个类名,也可以是一个别名。??
  87. ????????包含在框架的三个事务管理器分别是:JDBC,JTA和EXTERNAL。??
  88. ??????????
  89. ????????JDBC:通过常用的Connection?commit()和rollback()方法,让JDBC管理事务。??
  90. ??????????
  91. ????????JTA:本事务管理器使用一个JTA全局事务,使SQL?Map的事务包括在更大的事务范围内,??
  92. ?????????????这个更大的事务范围可能包括了其他的数据库和事务资源。??
  93. ?????????????这个配置需要一个UserTransaction属性,以便从JNDI获得一个UserTransaction。??
  94. ??????????
  95. ????????EXTERNAL:这个配置可以让您自己管理事务。您仍然可以配置一个数据源,??
  96. ??????????????????但事务不再作为框架生命周期的一部分被提交或回退。??
  97. ??????????????????这意味着SQL?Map外部应用的一部分必须自己管理事务。??
  98. ??????????????????这个配置也可以用于没有事务管理的数据库(例如只读数据库)。??
  99. ??
  100. ????-->??
  101. ????
  102. ????<dataSource?type="DBCP">??
  103. ??<!--??????
  104. ????<datasource><transactionManager>的一部分,??
  105. ????????为SQL?Map数据源设置了一系列参数。??
  106. ????????目前SQL?Map架构只提供三个DataSource?Factory,但您也可以添加自己的实现。??
  107. ??????????
  108. ????????SIMPLE:?SimpleDataSourceFactory为DataSource提供了一个基本的实现,??
  109. ????????????????适用于在没有J2EE容器提供DataSource的情况。??
  110. ????????????????它基于iBatis的SimpleDataSource连接池实现。??????????????????????
  111. ??????????????????
  112. ???????DBCP:?DbcpDataSourceFactory实现使用Jakarta?DBCP??
  113. ????????????(Database?Connection?Pool)的DataSource?API提供连接池服务。??
  114. ????????????适用于应用/Web容器不提供DataSource服务的情况,或执行一个单独的应用。??
  115. ??????????????
  116. ???????JNDI:?JndiDataSourceFactory在应用容器内部从JNDI?Context中??
  117. ?????????????查找DataSource实现。当使用应用服务器,并且服务器提供了容器管理的连??
  118. ?????????????接池和相关DataSource实现的情况下,可以使用JndiDataSourceFactory。??
  119. ?????????????使用JDBC?DataSource的标准方法是通过JNDI来查找。??
  120. -->??
  121. ??
  122. ??
  123. ??????<property?name="JDBC.Driver"???
  124. ????????????????value="net.sourceforge.jtds.jdbc.Driver"/>??
  125. ??????<property?name="JDBC.ConnectionURL"???
  126. ????????????????value="jdbc:jtds:sqlserver://127.0.0.1:1433/EXTFFM"/>??
  127. ??????<property?name="JDBC.Username"?value="sa"/>??
  128. ??????<property?name="JDBC.Password"?value="sa"/>??
  129. ??
  130. ?<!--??
  131. ??????????SQL?Map配置文件拥有唯一的<properties>元素,??
  132. ??????????用于在配置文件中使用标准的Java属性文件(name=value)。??
  133. ??????????这样做后,在属性文件中定义的属性可以作为变量在SQL?Map配置文件??
  134. ??????????及其包含的所有SQL?Map映射文件中引用。??
  135. ????????????
  136. ??????????例如,如果属性文件中包含属性:??
  137. ??????????driver=org.hsqldb.jdbcDriver??
  138. ??????????SQL?Map配置文件及其每个映射文件都可以使用占位符${driver}??
  139. ??????????来代表值org.hsqldb.jdbcDriver。例如:??
  140. ??????????<property?name="JDBC.Driver"?value="${driver}"/>??
  141. ??????-->??
  142. ??
  143. ????????
  144. ??????<property?name="Pool.MaximumActiveConnections"?value="10"/>??
  145. ??????<!--?数据库连接池可维持的最大容量。缺省值:?10?-->??
  146. ????????
  147. ??????<property?name="Pool.MaximumIdleConnections"?value="5"/>??
  148. ???????<!--?数据库连接池中允许的挂起(idle)连接数。缺省值:?5?-->??
  149. ?????????
  150. ??????<property?name="Pool.TimeToWait"?value="500"?/>??
  151. <!--???
  152. ?????????当线程试图从连接池中获取连接时,连接池中无可用连接可供使用,??
  153. ?????????此时线程将进入等待状态,直到池中出现空闲连接。??
  154. ?????????此参数设定了线程所允许等待的最长时间(单位:毫秒)缺省值:?10???
  155. -->??
  156. ??
  157. ??????<property?name="Pool.MaximumCheckoutTime"?value="120000"/>??
  158. ??????????????
  159. <!--???
  160. ????????数据库联接池中,连接被某个任务所允许占用的最大时间,??
  161. ????????如果超过这个时间限定,连接将被强制收回(单位:毫秒)。??
  162. ????????缺省值:?20000???
  163. -->??
  164. ????????
  165. ????????????????????
  166. ??????<property?name="Pool.PingQuery"?value="seslct?1?from?FFM_Sequence"?/>??
  167. ?<!--??
  168. ????????数据库连接状态检测语句。??
  169. ????????某些数据库在连接在某段时间持续处于空闲状态时会将其断开。??
  170. ????????而连接池管理器将通过此语句检测池中连接是否可用。??
  171. ????????它对性能的影响较大,应小心使用。检测语句应该是一个最简化的无逻辑SQL,??
  172. ????????如:select?1?from?dual缺省值:?N/A??
  173. -->???????
  174. ????????
  175. ??????<property?name="Pool.PingEnabled"?value="false"?/>??
  176. ???????<!--?是否允许检测连接状态。缺省值:?false?-->??
  177. ?????????
  178. ??????<property?name="Pool.PingConnectionsOlderThan"?value="1"?/>??
  179. ???????<!--?对持续连接时间超过设定值(毫秒)的连接进行检测。缺省值:?0?-->??
  180. ????????
  181. ??????<property?name="Pool.PingConnectionsNotUsedFor"?value="1"?/>??
  182. ??????<!--?对空闲超过设定值(毫秒)的连接进行检测。缺省值:?0?-->??
  183. ????</dataSource>??
  184. ??</transactionManager>??
  185. ??
  186. ??<sqlMap?resource="com/witnessj/ffm/domain/IBatisSqlMap/SequenceSqlMap.xml"/>??
  187. ????<!--??
  188. ????????<sqlMap>元素用于包括SQL?Map映射文件和其他的SQL?Map配置文件。??
  189. ????????每个SqlMapClient对象使用的所有SQL?Map映射文件都要在此声明。??
  190. ????????映射文件作为stream?resource从类路径或URL读入。??
  191. ????????您必须在这里指定所有的SQL?Map文件。??
  192. ??????????
  193. ????????List?more?here...??
  194. ??????<sqlMap?resource="com/mydomain/data/Order.xml"/>??
  195. ??????<sqlMap?resource="com/mydomain/data/Documents.xml"/>??
  196. ????-->??
  197. ??
  198. </sqlMapConfig>?
  相关解决方案