1.2 MyBatis 环境搭建


文档摘要

1.2 MyBatis 环境搭建 1.2 MyBatis 环境搭建:从零开始构建你的数据访问层 1.2.1 环境准备 在开始搭建 MyBatis 环境之前,需要准备以下组件: Java Development Kit (JDK): 确保已安装 JDK 8 或更高版本。 Integrated Development Environment (IDE): 推荐使用 IntelliJ IDEA 或 Eclipse,方便代码编写和调试。 Maven 或 Gradle: 用于管理项目依赖。 本文以 Maven 为例。 数据库: 例如 MySQL, PostgreSQL, Oracle 等。 本文以 MySQL 为例。 数据库驱动: MySQL Connector/J 或相应数据库的 JDBC 驱动。

1.2 MyBatis 环境搭建

1.2 MyBatis 环境搭建:从零开始构建你的数据访问层

1.2.1 环境准备

在开始搭建 MyBatis 环境之前,需要准备以下组件:

  1. Java Development Kit (JDK): 确保已安装 JDK 8 或更高版本。

  2. Integrated Development Environment (IDE): 推荐使用 IntelliJ IDEA 或 Eclipse,方便代码编写和调试。

  3. Maven 或 Gradle: 用于管理项目依赖。 本文以 Maven 为例。

  4. 数据库: 例如 MySQL, PostgreSQL, Oracle 等。 本文以 MySQL 为例。

  5. 数据库驱动: MySQL Connector/J 或相应数据库的 JDBC 驱动。

1.2.2 创建 Maven 项目

使用 IDE 创建一个 Maven 项目。 在创建项目时,选择 maven-archetype-quickstart 作为 Maven 原型。

创建完成后,你的项目结构应该类似于:

myBatis-demo/ ├── pom.xml └── src/ └── main/ └── java/ └── com/example/ └── App.java └── test/ └── java/ └── com/example/ └── AppTest.java

1.2.3 添加 MyBatis 依赖

打开 pom.xml 文件,添加 MyBatis 及其相关依赖。

<dependencies> <!-- MyBatis 核心依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.13</version> <!-- 使用最新版本 --> </dependency> <!-- MySQL 数据库驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <!-- 使用最新版本 --> </dependency> <!-- JUnit 单元测试 (可选) --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> <!-- SLF4J API (可选,用于日志输出) --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> </dependency> <!-- SLF4J 简单日志实现 (可选,用于日志输出) --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>2.0.9</version> <scope>test</scope> </dependency> </dependencies>

依赖解释:

  • org.mybatis:mybatis: MyBatis 核心依赖,包含了 MyBatis 的核心功能。

  • mysql:mysql-connector-java: MySQL 数据库驱动,用于连接 MySQL 数据库。 根据你使用的数据库选择对应的驱动。

  • junit:junit: JUnit 单元测试框架,用于编写和运行单元测试。

  • org.slf4j:slf4j-api: SLF4J API,一个简单的日志门面,允许你在不更改代码的情况下切换不同的日志实现。

  • org.slf4j:slf4j-simple: SLF4J 简单日志实现,将日志输出到控制台。

注意: 请根据实际情况选择 MyBatis、数据库驱动和 SLF4J 的最新版本。

1.2.4 创建 MyBatis 配置文件

src/main/resources 目录下创建 mybatis-config.xml 文件。这是 MyBatis 的核心配置文件,用于配置数据库连接、事务管理器、类型别名等信息。

<?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"> <!-- 使用 JDBC 事务管理器 --> <transactionManager type="JDBC"/> <!-- 使用连接池数据源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/your_database_name?useSSL=false&amp;serverTimezone=UTC"/> <property name="username" value="your_username"/> <property name="password" value="your_password"/> </dataSource> </environment> </environments> <!-- 映射器 --> <mappers> <!-- 可以配置多个 mapper 文件 --> <!-- <mapper resource="com/example/mapper/UserMapper.xml"/> --> </mappers> </configuration>

配置详解:

  • <configuration>: 根元素,包含所有配置信息。

  • <environments>: 定义 MyBatis 的环境配置,可以定义多个环境,例如开发环境、测试环境、生产环境。

    • default: 指定默认使用的环境 ID。

    • <environment>: 定义一个具体的环境。

      • id: 环境 ID,用于区分不同的环境。

      • <transactionManager>: 配置事务管理器。

        • type: 事务管理器类型,常用的有 JDBCMANAGED

          • JDBC: 使用 JDBC 提供的事务管理。

          • MANAGED: 将事务管理委托给容器,例如 Spring。

      • <dataSource>: 配置数据源。

        • type: 数据源类型,常用的有 UNPOOLED, POOLEDJNDI

          • UNPOOLED: 每次请求都创建一个新的连接。

          • POOLED: 使用连接池管理连接。

          • JNDI: 从 JNDI 容器中获取数据源。

        • <property>: 配置数据源属性,例如数据库驱动、URL、用户名和密码。

  • <mappers>: 配置映射器,指定 MyBatis 如何找到 SQL 映射文件。

    • <mapper>: 定义一个映射器。

      • resource: 指定映射文件的路径。

注意事项:

  • your_database_nameyour_usernameyour_password 替换为你实际的数据库信息。

  • 确保 MySQL 服务已启动,并且数据库存在。

  • 根据你使用的数据库驱动,修改 <property name="driver" value="..."/> 的值。

  • useSSL=falseserverTimezone=UTC 是 MySQL 连接参数,用于禁用 SSL 连接和设置服务器时区。

1.2.5 创建 SQL 映射文件

src/main/resources 目录下创建一个包,例如 com/example/mapper,并在该包下创建 UserMapper.xml 文件。 SQL 映射文件用于定义 SQL 语句和结果映射。

<?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.example.mapper.UserMapper"> <select id="selectAllUsers" resultType="java.util.Map"> SELECT * FROM users </select> </mapper>

配置详解:

  • <mapper>: 根元素,定义一个映射器。

    • namespace: 命名空间,用于区分不同的映射器。 通常设置为 Mapper 接口的完整类名。
  • <select>: 定义一个查询语句。

    • id: 语句 ID,用于在 Java 代码中引用该语句。 通常设置为 Mapper 接口中的方法名。

    • resultType: 结果类型,指定查询结果映射到的 Java 类型。 这里使用 java.util.Map,表示将查询结果映射到 Map 对象。

    • SQL 语句: 实际的 SQL 查询语句。

注意事项:

  • 确保数据库中存在名为 users 的表。

  • 根据实际情况修改 SQL 语句和结果类型。

1.2.6 创建 Java 接口

src/main/java/com/example/ 目录下创建 mapper 包,并在该包下创建 UserMapper.java 接口。

package com.example.mapper; import java.util.List; import java.util.Map; public interface UserMapper { List<Map<String, Object>> selectAllUsers(); }

接口详解:

  • package com.example.mapper;: 定义接口的包名,与 SQL 映射文件的 namespace 对应。

  • List<Map<String, Object>> selectAllUsers();: 定义一个查询所有用户的接口方法。 方法名与 SQL 映射文件中 <select> 元素的 id 对应。

1.2.7 使用 MyBatis API

src/main/java/com/example/ 目录下修改 App.java 文件,使用 MyBatis API 执行 SQL 语句。

package com.example; import com.example.mapper.UserMapper; 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.IOException; import java.io.InputStream; import java.util.List; import java.util.Map; public class App { public static void main(String[] args) throws IOException { // 1. 读取 MyBatis 配置文件 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); // 2. 构建 SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 3. 获取 SqlSession try (SqlSession sqlSession = sqlSessionFactory.openSession()) { // 4. 获取 Mapper 接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 5. 执行 SQL 语句 List<Map<String, Object>> users = userMapper.selectAllUsers(); // 6. 处理结果 for (Map<String, Object> user : users) { System.out.println(user); } } } }

代码详解:

  1. 读取 MyBatis 配置文件: 使用 Resources.getResourceAsStream() 方法读取 mybatis-config.xml 文件。

  2. 构建 SqlSessionFactory 使用 SqlSessionFactoryBuilder 构建 SqlSessionFactory 对象。 SqlSessionFactory 是 MyBatis 的核心接口,用于创建 SqlSession 对象。

  3. 获取 SqlSession 使用 sqlSessionFactory.openSession() 方法获取 SqlSession 对象。 SqlSession 是 MyBatis 的核心接口,用于执行 SQL 语句、管理事务。 使用 try-with-resources 语句可以确保 SqlSession 在使用完毕后自动关闭。

  4. 获取 Mapper 接口的代理对象: 使用 sqlSession.getMapper() 方法获取 Mapper 接口的代理对象。 MyBatis 会自动生成 Mapper 接口的实现类,并将 SQL 语句映射到接口方法。

  5. 执行 SQL 语句: 调用 Mapper 接口的方法执行 SQL 语句。

  6. 处理结果: 遍历查询结果,并打印到控制台。

1.2.8 运行程序

运行 App.java 程序,如果一切配置正确,你将在控制台看到从数据库查询到的用户数据。

1.2.9 环境搭建流程图

可以使用 Mermaid 绘制环境搭建流程图:

1.2.10 总结

通过以上步骤,你已经成功搭建了一个基本的 MyBatis 环境。 在这个环境中,你可以配置数据库连接、定义 SQL 映射、执行 SQL 语句,并获取查询结果。 后续章节将深入介绍 MyBatis 的更多功能,例如动态 SQL、缓存、插件等,帮助你构建更加强大和高效的数据访问层。 请务必理解每个步骤的含义,并尝试修改配置和代码,以便更好地掌握 MyBatis 的使用方法。


发布者: 作者: 转发
评论区 (0)
U