"ibatis3学习笔记,包括ibatis环境配置、SqlMapConfig.xml总配置文件以及实体映射文件(map)的示例"
Ibatis,全称MyBatis,是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。Ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Ibatis可以被看作是一个半自动的ORM(对象关系映射)框架,它能提供比Hibernate更细粒度的控制权和更好的性能。
在Ibatis3中,我们首先需要搭建开发环境。在这个例子中,开发者使用了Oracle 10g Express Edition数据库,并导入了必要的JDBC驱动包`ojdbc14.jar`,以及Ibatis的核心库`ibatis-3-core-3.0.0.208.jar`。这些库文件通常需要放在Java应用的类路径(ClassPath)中,以便系统能够找到并加载它们。
接下来是Ibatis的总配置文件`SqlMapConfig.xml`。这是一个全局配置文件,用于定义数据库环境、事务管理器和数据源。在这个配置中,环境被设定为"development",使用了JDBC作为事务管理器,数据源类型设置为"POOLED",这意味着使用了连接池来管理数据库连接。具体的数据库连接信息,如驱动类名、URL、用户名和密码,都在`dataSource`节点下进行配置。在这个例子中,数据库驱动是`oracle.jdbc.driver.OracleDriver`,数据库连接URL是`jdbc:oracle:thin:@localhost:1521:xe`,用户名和密码分别为"puf"和"pufang890505"。
在Ibatis中,每个实体类通常对应一个映射文件,这里以`Student.xml`为例。映射文件定义了SQL语句和结果映射,它是基于XML的,允许开发者编写自定义的SQL查询、插入、更新和删除操作。`namespace`属性定义了映射文件的命名空间,通常与Java中的DAO接口名称相对应。在映射文件中,可以定义`select`、`insert`、`update`和`delete`等标签,每个标签内包含SQL语句及其相关的参数和结果映射。
例如,`Student.xml`文件可能包含以下内容:
```xml
<select id="selectStudentById" resultType="cn.pf.ibatis.domain.Student">
SELECT * FROM students WHERE id = #{id}
</select>
<insert id="insertStudent" parameterType="cn.pf.ibatis.domain.Student">
INSERT INTO students (name, age) VALUES (#{name}, #{age})
</insert>
<update id="updateStudent" parameterType="cn.pf.ibatis.domain.Student">
UPDATE students SET name=#{name}, age=#{age} WHERE id=#{id}
</update>
<delete id="deleteStudentById" parameterType="int">
DELETE FROM students WHERE id=#{id}
</delete>
```
在上述示例中,`#{id}`、`#{name}`和`#{age}`是参数占位符,Ibatis会在运行时将它们替换为实际的Java对象属性值。`resultType`或`parameterType`指定返回结果或输入参数的Java类型。
通过这种方式,Ibatis使得开发者能够更方便地处理数据库操作,同时保持了SQL的灵活性。在实际项目中,Ibatis可以与Spring等其他框架集成,实现更复杂的业务逻辑和依赖注入。Ibatis的这种灵活性和易用性使其成为许多Java开发者的首选持久层框架。