配置文件名一般为:sqlMapConfig.xml
内容配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfigPUBLIC "-//iBATIS.apache.org//DTD SQL Map Config 2.0/" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 在这里将项目(工程)的所有资源文件包含进来,将相对与src路径的资源文件的路径以及文件名包含进来
设置工程的总体性能,根据名称来设置
cacheModelsEnabled全局控制缓存
enhancementEnabled全局控制运行时字节码增强,优化javabean的属性性
lazyLoadingEnabled 全局性的禁用延迟加载
maxRequests同时执行sql语句的最大线程数,通常大小maxTransactions的10倍,并且总是大于maxTransactions和maxSessions的总和。
减小这个值能够提高性能。
useStatementNamespaces="true"的情况下,Statement调用需追加命名空间,如:sqlMap.update("User.updateUser",user);
否则直接通过Statement名称调用即可,如: sqlMap.update("updateUser",user); 但请注意此时需要保证所有映射文件中,Statement定义无重名
maxTransactions<maxSessions=<maxRequests-->
<settings cacheModelsEnabled="true"enhancementEnabled="true"
lazyLoadingEnabled="true"
errorTracingEnabled="true"
maxRequests="32"
maxSessions="10"
maxTransactions="5"
useStatementNamespaces="true" />
<!-- type指定事务管理器:JDBC,JTA,EXTERNAL,三者的区别后面再讲到
type值由:SIMPLE,DBCP,JNDI三者的使用后面再讲 -->
<transactionManager type="JDBC"> // 指定事务管理机制
<dataSource type="SIMPLE"> //SIMPLE 指定 datasource 使用 iBates 内置数据库连接池
<property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />
<property name="JDBC.ConnectionURL" value="jdbc:mysql://localhost/person" />
<property name="JDBC.Username" value="root" />
<property name="JDBC.Password" value="root" />
<property name="Pool.MaximumActiveConnections" value="10" />
<property name="Pool.MaximumIdleConnections" value="5" />
<property name="Pool.MaximumCheckoutTime" value="120000" />
<property name="Pool.TimeToWait" value="500" />
<property name="Pool.PingQuery" value="select 1 from sample" />
<property name="Pool.PingEnabled" value="false" />
<property name="Pool.PingConnectionsOlderThan" value="1" />
<property name="Pool.PingConnectionsNotUsedFor" value="1" />
</dataSource>
</transactionManager>
<!-- 引入sqlMap -->
<sqlMap resource="sqlmaps/common/attachFile.xml" />
<sqlMap resource="sqlmaps/common/common.xml" />
<sqlMap resource="sqlmaps/common/user.xml" />
<sqlMap resource="sqlmaps/common/commonHouseInfo.xml" />
<!-- 可以去除 -->
<!-- <sqlMap resource="sqlmaps/common/houseInfoBaseResult.xml" />-->
</sqlMapConfig>
Sqlmap文件:
dynamic 会自动去除第一个prepend="and中的内容(这里为and),从而方便一些操作;
isNotNull 参数不为null时有效
isNotEmpty 参数不为null或“”时有效
isPropertyAvailable 如果参数有使用(paramMap中有这个key,不管value是null还是“”)则查询条件有效
prepend <isNotNull prepend="and"property="firstName" >
生成的语句不会有多余的and,因为dynamic有一个隐藏的属性:removeFirstPrepend="true",所以一般要写上prepend="and",需要的时候它会自动去掉