这是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>