Spring Boot 是一种用于简化 Java 开发的框架,特别是构建企业级应用程序。在与持久化层的交互方面,MyBatis 是一种非常流行的持久层框架,它支持定制 SQL、存储过程以及高级映射。本文将介绍如何在 Spring Boot 项目中集成 MyBatis,并通过示例展示其基本用法。
1. 创建 Spring Boot 项目
我们可以使用 Spring Initializr 来生成一个新的 Spring Boot 项目。在选择依赖时,确保添加以下模块:
- Spring Web
- MyBatis Framework
- MySQL Driver(或者其他你所使用的数据库驱动)
2. 配置 application.yml
在项目的 src/main/resources
目录下,打开或创建 application.yml
配置文件,填写数据库的连接信息:
spring:
datasource:
url: jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.model
3. 创建数据库表
假设我们有一个用户表 user
,其 SQL 可以如下创建:
CREATE TABLE user (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
4. 创建实体类
在 com.example.demo.model
包中创建一个 User
实体类:
package com.example.demo.model;
public class User {
private Integer id;
private String username;
private String password;
// Getters and Setters
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
5. 创建 Mapper 接口
在 com.example.demo.mapper
包中,创建一个 UserMapper
接口:
package com.example.demo.mapper;
import com.example.demo.model.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();
User findById(Integer id);
void insert(User user);
void update(User user);
void delete(Integer id);
}
6. 创建 Mapper XML 文件
在 src/main/resources/mapper
目录下,创建 UserMapper.xml
文件:
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="findById" resultType="com.example.demo.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insert">
INSERT INTO user (username, password) VALUES (#{username}, #{password})
</insert>
<update id="update">
UPDATE user SET username = #{username}, password = #{password} WHERE id = #{id}
</update>
<delete id="delete">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
7. 创建 Service 层
在 com.example.demo.service
包中创建 UserService
类,处理业务逻辑:
package com.example.demo.service;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> getAllUsers() {
return userMapper.findAll();
}
public User getUserById(Integer id) {
return userMapper.findById(id);
}
public void addUser(User user) {
userMapper.insert(user);
}
public void updateUser(User user) {
userMapper.update(user);
}
public void deleteUser(Integer id) {
userMapper.delete(id);
}
}
8. 创建 Controller 层
在 com.example.demo.controller
包中创建 UserController
类:
package com.example.demo.controller;
import com.example.demo.model.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@PostMapping
public void addUser(@RequestBody User user) {
userService.addUser(user);
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Integer id) {
return userService.getUserById(id);
}
@PutMapping("/{id}")
public void updateUser(@PathVariable Integer id, @RequestBody User user) {
user.setId(id);
userService.updateUser(user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Integer id) {
userService.deleteUser(id);
}
}
9. 启动应用并测试
现在,你可以通过 Spring Boot 的主程序类启动应用。访问 http://localhost:8080/users
可以获取所有用户数据,使用 HTTP POST、PUT、DELETE 等方法可以进行相应的增、删、改操作。
总结
通过上面的步骤,我们简单地展示了在 Spring Boot 中如何集成 MyBatis,并使用它进行基本的数据库操作。MyBatis 的灵活性和强大的 SQL 映射能力,使得它成为 Java 开发中一个非常优秀的选择。希望本文能够帮助你更好地理解和使用 Spring Boot 与 MyBatis 的结合。