使用Spring Boot如何实现对MyBatis的整合
在使用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的整合,以便实现数据持久化和业务逻辑分离的目标。
