在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.Drivermybatis.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>