iBatis SqlMap文件配置

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.Driver
url=jdbc:mysql://localhost:3306/cyh
username=root
password=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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值