授课语音

掌握MyBatis的基本开发流程及配置

MyBatis 是一款流行的 Java 持久化框架,它能够简化数据库操作,通过映射语句将 SQL 与 Java 对象进行映射。MyBatis 提供了比传统 JDBC 更为灵活和高效的数据库操作方式。本课件将介绍 MyBatis 的基本开发流程及配置,帮助大家快速上手 MyBatis。


1. MyBatis 概述

MyBatis 是一个半自动化的持久化框架,它通过配置文件和注解方式将 SQL 语句与 Java 对象进行映射。与 Hibernate 不同,MyBatis 允许开发者手写 SQL,提供了更高的灵活性。

  • MyBatis 的主要特点
    • 支持手写 SQL,灵活性更高。
    • 支持对象与数据库之间的映射。
    • 提供了丰富的查询和更新操作,支持动态 SQL。

2. MyBatis 的基本开发流程

MyBatis 的基本开发流程通常包括以下几个步骤:

  1. 创建数据库表:准备好需要操作的数据库表。
  2. 创建实体类:与数据库表一一对应的 Java 类。
  3. 创建 MyBatis 配置文件:包括全局配置文件和映射文件。
  4. 编写映射文件(Mapper 文件):将 SQL 语句与 Java 方法进行映射。
  5. 编写 Java 代码:使用 MyBatis API 完成数据库操作。

3. MyBatis 的配置文件

3.1 全局配置文件 (mybatis-config.xml)

mybatis-config.xml 是 MyBatis 的全局配置文件,主要用于配置数据库连接、缓存、日志等信息。最基本的配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>

  <!-- 配置数据库连接信息 -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/testdb"/>
        <property name="username" value="root"/>
        <property name="password" value="password"/>
      </dataSource>
    </environment>
  </environments>

  <!-- 配置MyBatis日志 -->
  <settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
  </settings>

</configuration>

代码解析:

  • <environments> 配置数据源和事务管理器。
  • <dataSource> 配置数据库连接信息,如 JDBC 驱动、数据库 URL、用户名和密码。
  • <settings> 配置 MyBatis 的日志记录方式。

3.2 Mapper 文件 (UserMapper.xml)

Mapper 文件是 MyBatis 的核心,包含 SQL 语句的定义和与 Java 方法的映射关系。一个基本的 Mapper 文件如下:

<?xml version="1.0" encoding="UTF-8" ?>
<mapper namespace="com.example.UserMapper">

  <!-- 查询所有用户 -->
  <select id="findAllUsers" resultType="com.example.User">
    SELECT id, name, age FROM users;
  </select>

  <!-- 根据ID查询用户 -->
  <select id="findUserById" parameterType="int" resultType="com.example.User">
    SELECT id, name, age FROM users WHERE id = #{id};
  </select>

  <!-- 插入用户 -->
  <insert id="insertUser" parameterType="com.example.User">
    INSERT INTO users (name, age) VALUES (#{name}, #{age});
  </insert>

  <!-- 更新用户 -->
  <update id="updateUser" parameterType="com.example.User">
    UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id};
  </update>

  <!-- 删除用户 -->
  <delete id="deleteUser" parameterType="int">
    DELETE FROM users WHERE id = #{id};
  </delete>

</mapper>

代码解析:

  • findAllUsers 查询所有用户,返回 User 类型的结果集。
  • findUserById 根据 id 查询用户,#{id} 是传入参数。
  • insertUser 插入用户数据,传入 User 对象。
  • updateUser 更新用户信息,通过 User 对象传入参数。
  • deleteUser 根据用户的 id 删除用户。

4. 创建实体类

MyBatis 的实体类是 Java 对象,它与数据库中的表结构对应。一个简单的 User 类如下:

public class User {
    private int id;
    private String name;
    private int age;

    // Getter 和 Setter 方法
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

代码解析:

  • User 类与数据库表 users 对应。它包含了与表字段相对应的属性以及相应的 Getter 和 Setter 方法。

5. 创建 Mapper 接口

MyBatis 提供了 Mapper 接口用于映射 SQL 语句和 Java 方法。通过接口与 Mapper 文件中的 SQL 语句进行绑定。一个简单的 UserMapper 接口如下:

public interface UserMapper {
    List<User> findAllUsers();  // 查询所有用户
    User findUserById(int id);  // 根据ID查询用户
    int insertUser(User user);  // 插入用户
    int updateUser(User user);  // 更新用户
    int deleteUser(int id);     // 删除用户
}

代码解析:

  • UserMapper 接口与 UserMapper.xml 文件中的 SQL 映射关系。
  • 每个方法的签名与 XML 文件中的 id 相对应。

6. MyBatis 配置与执行

6.1 SqlSessionFactory 的创建

创建 SqlSessionFactory 用于执行 SQL 操作。通过 SqlSessionFactoryBuilder 来构建 SqlSessionFactory

InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

代码解析:

  • Resources.getResourceAsStream() 用于加载配置文件。
  • SqlSessionFactoryBuilder().build() 创建 SqlSessionFactory 对象。

6.2 执行操作

通过 SqlSession 执行数据库操作。

try (SqlSession session = sqlSessionFactory.openSession()) {
    UserMapper userMapper = session.getMapper(UserMapper.class);
    List<User> users = userMapper.findAllUsers();
    for (User user : users) {
        System.out.println(user.getName());
    }
}

代码解析:

  • session.getMapper(UserMapper.class) 获取 UserMapper 接口的代理对象。
  • userMapper.findAllUsers() 调用接口方法执行查询。

7. 总结

  1. MyBatis 配置:通过 mybatis-config.xml 配置数据源、事务管理和日志。
  2. Mapper 文件:定义 SQL 语句和与 Java 方法的映射。
  3. 执行 SQL 操作:使用 SqlSession 执行数据库操作,获取结果并处理。

通过掌握这些基本的 MyBatis 开发流程,可以高效地完成数据库操作,提升开发效率。

去1:1私密咨询

系列课程: