欢迎访问宙启技术站
智能推送

使用Spring Boot如何实现对MyBatis的整合

发布时间:2023-05-17 15:47:03

在使用Spring Boot框架进行Web应用程序开发时,常常需要和持久层进行整合,以便实现数据的存储和检索等持久化功能。而MyBatis是一款由Java社区开发和维护的持久层框架,主要特点是避免了JDBC编码和面向对象语言的SQL编写冲突等问题,适用于各种规模的应用程序。在本文中,我们将介绍如何使用Spring Boot实现对MyBatis的整合,以便实现数据层和业务逻辑层的解耦。

一、添加依赖和配置

在使用Spring Boot框架时,需要在pom.xml文件中添加对MyBatis以及相关依赖的引用。其中,需要引用spring-boot-starter-jdbc、mybatis-spring-boot-starter和MySQL JDBC驱动等依赖。具体依赖如下:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.2.0</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>
</dependencies>

在引用完毕相关依赖之后,还需要在应用程序的application.properties或application.yml文件中添加MyBatis的相关配置信息。如下是application.properties的示例配置:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.configuration.map-underscore-to-camel-case=true

在配置文件中,需要包含MyBatis的映射文件路径,以及MyBatis的相关配置信息,如开启下划线转为驼峰命名等。

二、创建实体类和Mapper接口

在使用MyBatis进行数据层操作时,需要首先定义实体类和Mapper接口,并将其与数据库中的表进行映射。在这里,我们以一个User实体类和UserMapper接口为例:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // 省略getter和setter方法
    // ...
}

@Mapper
public interface UserMapper {
    @Select("SELECT * FROM user WHERE id = #{id}")
    User findUserById(Long id);
    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
    int addUser(User user);
    @Update("UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}")
    int updateUser(User user);
    @Delete("DELETE FROM user WHERE id = #{id}")
    int deleteUser(Long id);
}

其中,User实体类对应着数据库中的user表,而UserMapper接口则定义了数据层操作的CRUD方法。其中,通过使用@Mapper注解标记UserMapper接口,以便MyBatis能够自动识别该接口并获取相应的Mapper实例。

三、使用MyBatis进行数据层操作

在建立好实体类和Mapper接口之后,我们就可以使用MyBatis进行数据层操作了。在Spring Boot框架中,可以通过直接注入UserMapper实例的方式来使用MyBatis进行数据操作,具体实现如下:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public User findUserById(Long id) {
        return userMapper.findUserById(id);
    }
    public int addUser(User user) {
        return userMapper.addUser(user);
    }
    // ... 其他数据层操作方法
}

其中,通过使用@Autowired注解方式,将UserMapper实例注入到UserService中,然后我们就可以直接使用UserMapper的方法进行数据操作了。

四、运行Spring Boot应用程序

在完成Java类的编写、依赖的引用和配置文件的配置之后,我们就可以运行Spring Boot应用程序,以便测试数据层操作的正确性和效果。具体运行方式为:

(1) 在IDE中直接运行应用程序的Main方法。

(2) 使用Maven命令运行应用程序,命令如下:

.\mvnw spring-boot:run

运行成功后,我们就可以通过发送HTTP请求,验证数据层操作的正确性了。例如,我们在控制台输出用户id为1和2的信息,控制台输出如下:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
2021-09-06 23:39:56.575  INFO 26056 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 1.8.0_301 on DESKTOP-K4G0R6P with PID 26056 (C:\Users\Mike\demo\target\classes started by Mike in C:\Users\Mike\demo)
2021-09-06 23:39:56.577  INFO 26056 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to default profiles: default
2021-09-06 23:39:57.341  INFO 26056 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 1.772 seconds (JVM running for 2.454)
User [id=1, name=test1, age=22]
User [id=2, name=test2, age=23]

这表明,我们成功地使用Spring Boot实现了对MyBatis的整合,以便实现数据持久化和业务逻辑分离的目标。