在Spring Boot项目中使用Mybatis进行数据库操作是一种常见的实现方式。下面我将展示如何在Spring Boot项目中整合Mybatis。这个示例将包括几个主要部分:项目依赖配置、配置文件、实体类、Mapper接口及其XML配置文件、服务类、以及一个简单的控制器。
1. 项目依赖配置(pom.xml)
首先,你需要在你的pom.xml
文件中添加Spring Boot和Mybatis的依赖。这里假设你已经创建了一个Spring Boot项目。
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Spring Boot Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- MySQL Driver -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- Spring Boot Starter Test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2. 配置文件(application.properties)
在src/main/resources/application.properties
文件中配置数据库连接信息和Mybatis的相关设置。
spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.example.yourproject.domain
3. 实体类
创建一个实体类来代表数据库中的一个表。假设我们有一个用户表。
package com.example.yourproject.domain;
public class User {
private Long id;
private String name;
private String email;
// Getters and Setters
}
4. Mapper接口及其XML配置
创建一个Mapper接口定义数据库操作,以及一个XML文件来实现具体的SQL语句。
package com.example.yourproject.mapper;
import com.example.yourproject.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user")
List<User> findAll();
}
在src/main/resources/mapper/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.yourproject.mapper.UserMapper">
<select id="findAll" resultType="com.example.yourproject.domain.User">
SELECT * FROM user
</select>
</mapper>
5. 服务类
创建一个服务类来使用Mapper接口。
package com.example.yourproject.service;
import com.example.yourproject.domain.User;
import com.example.yourproject.mapper.UserMapper;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private final UserMapper userMapper;
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public List<User> findAll() {
return userMapper.findAll();
}
}
6. 控制器
最后,创建一个简单的控制器来展示如何从数据库中获取数据。
package com.example.yourproject.controller;
import com.example.yourproject.domain.User;
import com.example.yourproject.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/users")
public List<User> getAllUsers() {
return userService.findAll();
}
}
需要注意需要在启动类上加上@MapperScan注解识别一下自己的mapper路径,所以也需要引入下述依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version> <!-- 使用最新版本或适合你项目的版本 -->
</dependency>