### MyBatis配置详解 #### 一、MyBatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以通过简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 #### 二、构建MyBatis工程 构建一个使用 MyBatis 的 Java Web 工程,主要分为以下几个步骤: 1. **创建Java Web工程**:首先需要创建一个新的 Java Web 工程,这可以通过 Eclipse、IntelliJ IDEA 等集成开发环境来实现。 2. **导入MyBatis和MySQL的JAR包**:在 `WEB-INF/lib` 目录下添加 MyBatis 和 MySQL 数据库驱动的 JAR 包。这一步骤非常重要,因为 MyBatis 和 MySQL 的 JAR 包提供了访问数据库所需的所有类和接口。 3. **创建配置文件**:接下来,需要创建一个名为 `config.xml` 的配置文件,该文件通常位于 `WEB-INF/classes` 目录下。在这个文件中,可以配置 MyBatis 的各种属性,包括数据源、事务管理器、类型别名等。配置文件中的 `<mappers>` 标签用于指定 SQL 映射文件的位置。 4. **创建SQL映射文件**:映射文件(如 `map.xml`)用于定义 SQL 查询语句以及查询结果与 Java 对象之间的映射关系。这些文件通常位于 `WEB-INF/classes` 目录下,并且每个映射文件都与一个特定的接口相对应。 5. **编写接口**:创建一个接口类(例如 `UserDao`),用于定义需要执行的 SQL 操作。接口中的方法名必须与映射文件中的 SQL ID 相匹配。 6. **编写测试类**:编写一个测试类来验证配置是否正确无误。测试类中会加载配置文件并创建 `SqlSession` 对象,然后通过调用接口中的方法来执行 SQL 操作。 #### 三、详细解析 ##### 1. 创建配置文件 `config.xml` ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC"/> <property name="username" value="root"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/lgg/mybaties/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 在上述配置文件中,`<mappers>` 标签用于指定 SQL 映射文件的位置。这里的 `resource` 属性指定了映射文件的路径。 ##### 2. 创建映射文件 `UserMapper.xml` ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.lgg.mybaties.dao.UserDao"> <resultMap id="myuser" type="com.lgg.mybaties.model.User"> <id property="id" column="id"/> <result property="username" column="username"/> <result property="password" column="password"/> </resultMap> <select id="finduser" resultMap="myuser"> SELECT * FROM user WHERE username = #{username} </select> </mapper> ``` - **`namespace`**:表示与映射文件对应的接口的全限定名称。 - **`resultMap`**:定义了如何将数据库结果映射到 Java 对象。其中,`type` 属性指定了返回的 Java 类型。 - **`select`**:定义了一个 SQL 查询,其 `id` 属性必须与接口中的方法名一致。 ##### 3. 创建接口类 `UserDao` ```java package com.lgg.mybaties.dao; import com.lgg.mybaties.model.User; public interface UserDao { User finduser(String username); } ``` - **`UserDao`**:这是一个接口,其中包含了一个 `finduser` 方法,用于根据用户名查询用户信息。 ##### 4. 测试类 ```java package com.lgg.mybaties.test; import com.lgg.mybaties.dao.UserDao; import com.lgg.mybaties.model.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.Reader; public class TestUserDao { public static void main(String[] args) { // 保存配置文件路径 String resource = "com/lgg/mybaties/config/MyBatisConfig.xml"; Reader reader = null; try { // 利用 Resources 为 reader 赋值 reader = Resources.getResourceAsReader(resource); // 创建 SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 打开 session SqlSession sqlSession = sqlSessionFactory.openSession(); // 获取 Dao 接口的代理对象 UserDao userDao = sqlSession.getMapper(UserDao.class); // 调用方法 User user = userDao.finduser("test"); System.out.println(user); } catch (Exception e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (Exception e) { e.printStackTrace(); } } } } } ``` - **`TestUserDao`**:这个测试类加载了配置文件,并通过 `SqlSessionFactory` 创建了 `SqlSession` 对象。接着,通过 `getMapper` 方法获取了 `UserDao` 接口的代理实例,并调用了其中的方法来执行 SQL 查询操作。 通过以上步骤,我们可以成功地构建一个使用 MyBatis 的 Java Web 工程,并实现了基本的数据库操作。这种方式不仅提高了代码的可读性和可维护性,还极大地简化了 JDBC 编码的工作量。































- 粉丝: 14
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 适应互联网+教育的高职计算机专业课程体系改革研究.docx
- 综合布线六类系统方案-模版.doc
- 基于AVR单片机的智能小车方案设计书.doc
- 公路工程档案管理信息化路径探究.docx
- 全国计算机等级测验二级MS+Office高级应用真题题库2+2016年3月.docx
- 面向对象程序设计A总结.ppt
- 春计算机网络毕业论文.doc
- 《计算机应用基础》课程创新改革实践.docx
- 中小型企业的项目管理分析研究.docx
- 探讨计算机网络数据库的安全管理技术.docx
- 广播电视网应用云计算技术的实践与探索.docx
- 基于网络的城乡信息技术Scratch互动学习.docx
- 探究互联网+背景下医院微信公众平台建设的方向.docx
- 计算机网络安全教程课后答案.doc
- 2005年10月电子商务安全导论全国自考试题.doc
- 基于树莓派的智能小车:自动避障、实时视频传输、目标检测及网球追踪系统


