Spring Boot 中的 MyBatis 是什么,如何使用

Spring Boot 中的 MyBatis 是什么,如何使用

简介

MyBatis 是一种流行的 Java 持久化框架,可以将 SQL 查询映射到对象上,并提供了简单易用的 API 来执行 CRUD 操作。Spring Boot 可以与 MyBatis 集成,提供了简化配置和自动化配置的功能,使得使用 MyBatis 变得更加容易。

在本文中,我们将介绍 Spring Boot 中的 MyBatis,包括如何配置和使用 MyBatis,以及如何使用 MyBatis 进行常见的 CRUD 操作。同时,我们还将介绍如何使用 MyBatis 的注解和 XML 配置文件来编写 SQL 查询。

在这里插入图片描述

配置 MyBatis

在 Spring Boot 中使用 MyBatis,我们需要在 pom.xml 文件中添加 MyBatis 和 MyBatis-Spring 的依赖,如下所示:

<dependencies>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.7</version>
    </dependency>
</dependencies>

接下来,我们需要配置数据库连接信息和 MyBatis 的配置信息。我们可以在 application.properties 文件中指定数据库连接信息,如下所示:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=123456

application.properties 文件中,我们还可以指定 MyBatis 的配置信息,如下所示:

mybatis.config-location=classpath:mybatis-config.xml

在上面的配置中,我们指定了 MyBatis 的配置文件路径为 classpath:mybatis-config.xml。在 MyBatis 的配置文件中,我们可以定义一些 MyBatis 的全局配置,例如是否开启缓存、是否开启延迟加载等。

MyBatis 的基本操作

在配置好 MyBatis 后,我们可以开始使用 MyBatis 进行数据库操作了。MyBatis 提供了两种方式来执行 SQL 查询:XML 配置文件和注解。在下面的示例中,我们将演示如何使用这两种方式来执行 CRUD 操作。

使用 XML 配置文件执行 CRUD 操作

首先,我们需要创建一个 Plain Old Java Object(POJO)类,用来表示数据库中的一条记录。在这个示例中,我们使用 User 类来表示用户信息,如下所示:

public class User {
    
    
    
    private Long id;
    private String name;
    private Integer age;
    
    // getters and setters
}

接下来,我们需要创建一个 XML 配置文件,用来定义 SQL 查询和映射关系。在这个示例中,我们创建了一个 UserMapper.xml 文件,定义了一些基本的 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">
    
    <resultMap id="userMap" type="User">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
    </resultMap>
    
    <select id="getUserById" resultMap="userMap">
        SELECT * FROM user WHERE id = #{id}
    </select>
    
    <select id="getAllUsers" resultMap="userMap">
        SELECT * FROM user
    </select>
    
    <insert id="insertUser">
        INSERT INTO user (name, age) VALUES (#{name}, #{age})
    </insert>
    
    <update id="updateUserById">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    
    <delete id="deleteUserById">
        DELETE FROM user WHERE id = #{id}
    </delete>
    
</xml>

在上面的 XML 配置文件中,我们定义了一个 UserMapper 命名空间,并定义了一个 resultMap 元素,用来映射查询结果到 User 对象上。然后,我们定义了一些 SQL 查询和映射关系,包括 getUserByIdgetAllUsersinsertUserupdateUserByIddeleteUserById。这些 SQL 查询可以通过 MyBatis 的 API 进行调用,从而执行相应的操作。

接下来,我们需要创建一个 Mapper 接口,用来定义访问数据库的 API。在这个示例中,我们创建了一个 UserMapper 接口,包含了上述 SQL 查询对应的方法,如下所示:

public interface UserMapper {
    
    
    
    User getUserById(Long id);
    
    List<User> getAllUsers();
    
    void insertUser(User user);
    
    void updateUserById(User user);
    
    void deleteUserById(Long id);
    
}

在上面的 Mapper 接口中,我们定义了五个方法,分别对应上述 SQL 查询。这些方法的名称和参数类型需要与 XML 配置文件中的 SQL 查询对应。

最后,我们可以在 Service 层中调用 Mapper 接口来执行 CRUD 操作。以下是一个简单的示例:

@Service
public class UserService {
    
    
    
    @Autowired
    private UserMapper userMapper;
    
    public User getUserById(Long id) {
    
    
        return userMapper.getUserById(id);
    }
    
    public List<User> getAllUsers() {
    
    
        return userMapper.getAllUsers();
    }
    
    public void insertUser(User user) {
    
    
        userMapper.insertUser(user);
    }
    
    public void updateUserById(User user) {
    
    
        userMapper.updateUserById(user);
    }
    
    public void deleteUserById(Long id) {
    
    
        userMapper.deleteUserById(id);
    }
}

在上面的 Service 中,我们注入了 UserMapper 接口,并调用相应的方法来执行 CRUD 操作。

使用注解执行 CRUD 操作

除了 XML 配置文件之外,MyBatis 还支持使用注解来定义 SQL 查询。以下是一个使用注解定义 SQL 查询的示例:

@Mapper
public interface UserMapper {
    
    
    
    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(Long id);
    
    @Select("SELECT * FROM user")
    List<User> getAllUsers();
    
    @Insert("INSERT INTO user (name, age) VALUES (#{name}, #{age})")
    void insertUser(User user);
    
    @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
    void updateUserById(User user);
    
    @Delete("DELETE FROM user WHERE id = #{id}")
    void deleteUserById(Long id);
    
}

在上面的代码中,我们使用注解来定义 SQL 查询,并将 @Mapper 注解用于标记这个接口为 MyBatis 的 Mapper 接口。这些 SQL 查询可以直接通过接口的方法调用来执行。

使用注解定义 SQL 查询可以使代码更加简洁和易读,但是相对于 XML 配置文件,注解的可维护性较差,而且难以复用查询语句。

总结

在本文中,我们介绍了 Spring Boot 中如何集成 MyBatis,并演示了如何使用 XML 配置文件和注解来执行 CRUD 操作。MyBatis 是一种流行的 Java 持久化框架,可以将 SQL 查询映射到对象上,并提供了简单易用的 API 来执行 CRUD 操作。通过 Spring Boot 的自动化配置和简化配置,使用 MyBatis 变得更加容易和便捷。使用 MyBatis 可以使数据库操作变得更加简单和高效,同时也可以使代码更加易读和易维护。

猜你喜欢

转载自blog.csdn.net/2302_77835532/article/details/131590637