介绍
在 Java 项目中,Spring Boot 是一款非常受欢迎的框架,而 MyBatis 是一款轻量级的持久层框架。它们的结合可以极大地简化数据库操作的开发,提高开发效率。本文将介绍如何在 Spring Boot 项目中使用 MyBatis,并以 xml 的形式进行配置。
环境配置
在开始整合之前,需要确保已经配置好以下环境:
- JDK 1.8+
- Maven
- Spring Boot
- MyBatis
搭建项目
首先,我们需要创建一个 Spring Boot 项目。可以使用 Spring Initializer(https://start.spring.io/)快速生成项目骨架,包括 Maven 配置文件、源代码目录结构等。
导入依赖
打开项目的 pom.xml 文件,在 <dependencies>
标签中添加以下依赖:
<dependencies>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MyBatis Starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!-- MySQL 驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
</dependencies>
这里我们引入了 Spring Boot Web Starter、MyBatis Starter 和 MySQL 驱动的依赖。
配置数据源
在 src/main/resources
目录下创建 application.properties
文件,并添加以下配置:
# MySQL 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/db_name
spring.datasource.username=username
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# MyBatis 配置
mybatis.mapper-locations=classpath:mappers/*.xml
mybatis.type-aliases-package=com.example.models
将上述配置中的 db_name
、username
和 password
改为你自己的数据库配置。
创建数据模型和Mapper接口
在 src/main/java/com/example/models
目录下,创建一个名为 User
的 Java 类,作为数据模型:
package com.example.models;
public class User {
private int id;
private String name;
private int age;
// 省略 getter 和 setter 方法
}
在 src/main/java/com/example/mappers
目录下,创建一个名为 UserMapper
的 Java 接口,作为 Mapper:
package com.example.mappers;
import com.example.models.User;
import java.util.List;
public interface UserMapper {
List<User> getAllUsers();
User getUserById(int id);
void insertUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
创建Mapper.xml文件
在 src/main/resources/mappers
目录下,创建一个名为 UserMapper.xml
的 XML 文件,对应上面创建的 UserMapper
接口。
<?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.mappers.UserMapper">
<resultMap id="userResultMap" type="com.example.models.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<select id="getAllUsers" resultMap="userResultMap">
SELECT * FROM users
</select>
<select id="getUserById" parameterType="int" resultMap="userResultMap">
SELECT * FROM users WHERE id = #{id}
</select>
<insert id="insertUser" parameterType="com.example.models.User">
INSERT INTO users(name, age) VALUES(#{name}, #{age})
</insert>
<update id="updateUser" parameterType="com.example.models.User">
UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
这里的 namespace
属性值必须与上面的接口类全路径相同。
编写Service和Controller
在 src/main/java/com/example/services
目录下,创建一个名为 UserService
的 Java 类,用于处理业务逻辑:
package com.example.services;
import com.example.mappers.UserMapper;
import com.example.models.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
private UserMapper userMapper;
@Autowired
public UserService(UserMapper userMapper) {
this.userMapper = userMapper;
}
public List<User> getAllUsers() {
return userMapper.getAllUsers();
}
public User getUserById(int id) {
return userMapper.getUserById(id);
}
public void insertUser(User user) {
userMapper.insertUser(user);
}
public void updateUser(User user) {
userMapper.updateUser(user);
}
public void deleteUser(int id) {
userMapper.deleteUser(id);
}
}
在 src/main/java/com/example/controllers
目录下,创建一个名为 UserController
的 Java 类,用于处理控制层逻辑:
package com.example.controllers;
import com.example.models.User;
import com.example.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
private UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/")
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable int id) {
return userService.getUserById(id);
}
@PostMapping("/")
public void insertUser(@RequestBody User user) {
userService.insertUser(user);
}
@PutMapping("/{id}")
public void updateUser(@PathVariable int id, @RequestBody User user) {
user.setId(id);
userService.updateUser(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable int id) {
userService.deleteUser(id);
}
}
运行项目
现在,可以在终端中进入项目根目录,运行以下 Maven 命令启动项目:
$ mvn spring-boot:run
项目启动后,可以通过访问 http://localhost:8080/users/
来进行接口测试。
总结
通过使用 Spring Boot 和 MyBatis 的结合,我们可以很方便地进行数据库操作。在本文中,我们以 xml 的方式配置 MyBatis,并通过示例代码演示了如何进行增删改查等操作。希望本文对你理解 Spring Boot 和 MyBatis 的整合有所帮助。
本文来自极简博客,作者:落日余晖,转载请注明原文链接:Springboot Mybatis整合--xml方式