这是MyBatis 修改操作运行过程细节的重要的步骤。下方这个表格描述了这些设置项、含义和默认值。
下面列出关于设置的完整例子:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!--
参数说明:
cacheModelsEnabled:
启用或禁用SqlMapClient的所有缓存model。调试程序时使用。
enhancementEnabled:
启用或禁用运行时字节码增强,以优化访问Java Bean属性的性能,同时优化延迟加载
的性能。
lazyLoadingEnabled:
启用或禁用SqlMapClient的所有延迟加载。调试程序时使用。
maxRequests:
同时执行SQL语句的最大线程数。大于这个值的线程将阻塞直到另一个线程执行完成。
不同的DBMS有不同的限制值,但任何数据库都有这些限制。通常这个值应该至少是
maxTransactions的10倍,并且总是大于maxSessions和maxTranactions。减小这个参数值通常能提高性能。
maxSessions:
同一时间内活动的最大session数。一个session可以是代码请求的显式session,
也可以是当线程使用SqlMapClient实例(即执行一条语句)自动获得的session。
它应该总是大于或等于maxTransactions并小于maxRequests。减小这个参数值通常能
减少内存使用。
maxTransactions:
同时进入SqlMapClient.startTransaction()的最大线程数。大于这个值的线程将阻塞
直到另一个线程退出。不同的DBMS有不同的限制值,但任何数据库都有这些限制。这个
参数值应该总是小于或等于maxSessions并总是远远小于maxRequests。减小这个参数值
通常能提高性能。
useStatementNamespaces:
如果启用本属性,必须使用全限定名来引用mapped statement。Mapped statement的
全限定名由sql-map的名称和mapped-statement的名称合成,例如
queryForObject(“sqlMapName.statementName”)
-->
<settings cacheModelsEnabled="true"
enhancementEnabled="false"
lazyLoadingEnabled="false"
maxRequests="3000"
maxSessions="3000"
maxTransactions="3000"
useStatementNamespaces="false"/>
<sqlMap resource="sqlmap-mapping-auto.xml"/>
<sqlMap resource="sqlmap-mapping-pcs.xml" />
<sqlMap resource="sqlmap-mapping-offer.xml"/>
<sqlMap resource="sqlmap-mapping-order.xml"/>
<sqlMap resource="sqlmap-mapping-payment.xml"/>
<sqlMap resource="sqlmap-mapping-task.xml"/>
<sqlMap resource="sqlmap-mapping-renewal.xml"/>
<sqlMap resource="sqlmap-mapping-service-collection.xml"/>
</sqlMapConfig>