iBatis SqlMap文件配置

来源:互联网 发布:华为悦盒电信网络设置 编辑:程序博客网 时间:2024/05/16 20:30

Sql Map配置文件是iBatis配置的核心,从数据库连接到执行SQL时使用的sqlMap文件都是通过此文件中的配置提供给框架的,它通常命名为sqlMapConfig.xml。

一个sqlMapConfig.xml的例子:

<?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="resource/connection-configs.properties" />  <settings useStatementNamespaces="true"/>  <!-- Configure a built-in transaction manager.  If you're using an       app server, you probably want to use its transaction manager       and a managed datasource -->  <transactionManager type="JDBC" >    <dataSource type="SIMPLE">      <property name="JDBC.Driver" value="${driver}"/>      <property name="JDBC.ConnectionURL" value="${url}"/>      <property name="JDBC.Username" value="${username}"/>      <property name="JDBC.Password" value="${password}"/>    </dataSource>  </transactionManager>     <sqlMap resource="resource/sqlMap.xml"/></sqlMapConfig>

下面介绍下配置文件中的元素

1.<properties>

它在主配置文件外提供一个键/值对应表,是一个properties文件,它可以让sqlmap配置文件更加灵活。上面例子中的connection-configs.properties文件的内容:

driver=com.mysql.jdbc.Driverurl=jdbc:mysql://localhost:3306/cyhusername=rootpassword=root
中间的键值就在运行时替换了了下面的<dataSource>元素下的<property>中${driver}等值。

2.<settings>

全局配置选项,有以下属性:

lazyLoadingEnabled:延迟加载,true或者false,默认true

cacheModelsEnabled:
高度缓存,将最近使用过的数据存放在内存中,true或者false

enhancementEnabled:
是否使用cglib中已优化的类来提高延迟加载的性能,true或者false,默认true

useStatementNamespaces
 在使用已映射语句时,是否使用限定名,true或者false,默认false
假如有个为Acount的SQL映射,包括insert的映射语句。启用useStatementNamespaces时,需要使用Acount.insert来调用这条sql语句。
假如<sqlMapConfig>下有多个<sqlMap resource="resource/sqlMapxxx.xml"/>这样的配置文件,每个文件中的sql元素id都一样,
   <sqlMap resource="resource/sqlMap1.xml"/>   <sqlMap resource="resource/sqlMap2.xml"/></sqlMapConfig>
sqlMap1.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <select id="find_key" resultClass="hashmap"> ...... </select>......
sqlMap2.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"    "http://ibatis.apache.org/dtd/sql-map-2.dtd"> <select id="find_key" resultClass="hashmap"> ...... </select>......

为了防止sql语句的id命名冲突,可以设置useStatementNamespaces参数为true,并且为每个sqlmap文件指定不同的命名空间。
sqlMap1.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"    "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="com.test.namespace1">     .....<select id="find_key" resultClass="hashmap">      ......     </select>.....
sqlMap2.xml:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMap    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"    "http://ibatis.apache.org/dtd/sql-map-2.dtd"><sqlMap namespace="com.test.namespace2">     .....<select id="find_key" resultClass="hashmap">      ......     </select>.....

下面3个参数已经废弃,可以不用考虑手动配置:
maxRequests
request:对数据库的一次SQL操作。默认值512

maxSessions:最大会话数
会话是一种线程级机制,用于跟踪一组相关事务和请求的信息,默认值128.

maxTransactions:
最大活动事务数,默认值32

3.<TypeAlias>
用于定义别名,可以通过它用简单的字符替代全限定类名。
iBatis框架为若干类型定义了别名。
一些常用的:
事务管理器:
JDBC替代com.ibatis.sqlmap.engine.transaction.jdbc.JdbcTransactionConfig
JTA,EXTERNAL和上面类似
数据类型:
string替代java.lang.String
hashmap替代java.util.HashMap
其他类似
数据源工厂类型:
SIMPLE替代com.ibatis.sqlmap.engine.datasource.SimpleDataSourceFactory
DBCP,JNDI和上面类似

4.<transactionManager>
用于处理事务,type属性用于指定事务管理器。(JDBC,JTA,EXTERNAL)
它的子元素:
<dataSource>:
指定DataSourceFactory实现类,iBatis用这个实现类来创建实际的DataSource,它有3个可选的属性:SIMPLE,DBCP,JNDI
SIMPLE:简单数据源工厂,用于配置内置有简单连接池的数据源,除了实际的jdbc驱动程序外,该数据源工厂需要的其他东西都包含在iBatis框架中。
DBCP:用于使用Jakarta Commons数据库连接池实现。
JNDI:用于允许iBatis共享通过JNDI定位的基于容器的数据源。
<dataSource>的子元素:<property>,它定义了数据库连接的配置

5.<typeHandler>
类型处理器,将数据从数据库的类型转换为应用程序中的数据类型。

6.<sqlMap>
指定SQL映射文件的位置
元素有2个属性,resource和url
resource相对于类路径根目录的路径。

0 0
原创粉丝点击