iBatis配置与映射文件详解:sqlMapConfig.xml

需积分: 12 0 下载量 62 浏览量 更新于2024-07-26 收藏 164KB DOC 举报
"本文主要介绍的是iBatis框架中的核心配置文件`sqlMapConfig.xml`以及映射文件的相关知识。" 在iBatis这个轻量级的持久层框架中,`sqlMapConfig.xml`是整个系统的配置中心,它包含了对iBatis运行环境的基本设置,如数据源配置、事务管理器、缓存策略以及SQL映射文件的位置等信息。以下是`sqlMapConfig.xml`文件中各部分的详细解释: 1. 文档声明:文件开头的`<?xml version="1.0" encoding="UTF-8"?>`声明了文件的XML版本和编码方式。 2. DTD引用:`<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQLMapConfig 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">`引用了iBatis的DTD(Document Type Definition),用于验证配置文件的语法正确性。 3. 根元素`<sqlMapConfig>`:整个配置文件的起点,包含了所有其他配置元素。 4. 设置`<settings>`:这部分配置了iBatis的一些高级特性,如缓存(`cacheModelsEnabled`)、延迟加载(`lazyLoadingEnabled`)、字节码增强(`enhancementEnabled`)、错误处理(`errorTracingEnabled`)、最大并发请求数(`maxRequests`)、最大Session数(`maxSessions`)和最大并发事务数(`maxTransactions`)。这些设置可以优化iBatis的行为和性能。 - `useStatementNamespaces="true"`表示启用命名空间,使得SQL语句可以通过命名空间进行区分,避免ID冲突。 5. 事务管理器`<transactionManager>`:定义了iBatis如何管理事务。在示例中,`type="JDBC"`表示使用JDBC来管理事务,还有JTA和EXTERNAL两种选择。 6. 数据源`<dataSource>`:配置数据库连接信息。`type="SIMPLE"`表示使用简单的数据源,另外还有DBCP和JNDI两种选项。然后通过`<property>`标签设置数据库驱动、连接URL、用户名和密码。 7. 映射文件`<sqlMap>`:通常在`<sqlMapConfig>`下,会包含多个`<sqlMap>`标签,每个`<sqlMap>`标签对应一个单独的XML映射文件,如`user.xml`、`order.xml`等,这些映射文件中包含了具体的SQL语句和结果映射。 映射文件(例如:`user.xml`)是iBatis的核心组成部分,它定义了SQL语句、参数映射和结果集映射。以下是一段映射文件的示例: ```xml <sqlMap namespace="User"> <select id="getUserById" parameterClass="int" resultClass="User"> SELECT * FROM users WHERE id = #value# </select> <insert id="insertUser" parameterClass="User"> INSERT INTO users (name, email) VALUES (#name#, #email#) </insert> <update id="updateUser" parameterClass="User"> UPDATE users SET name = #name#, email = #email# WHERE id = #id# </update> <delete id="deleteUser" parameterClass="int"> DELETE FROM users WHERE id = #value# </delete> </sqlMap> ``` 在这个例子中,`namespace`是映射文件的命名空间,`select`、`insert`、`update`和`delete`分别对应SQL的四种操作。`id`是SQL语句的唯一标识,`parameterClass`指定参数类型,而`resultClass`则定义了返回结果的Java类。 iBatis的`sqlMapConfig.xml`文件是系统级别的配置,控制了iBatis的整体行为,而映射文件则是业务层面的配置,包含了具体的SQL操作。两者协同工作,使得iBatis能够灵活地与数据库交互,实现数据持久化的功能。