Spring Boot与MyBatis集成详细教程
一、简介
MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
二、环境准备
在开始之前,请确保您已经安装了以下工具:
- JDK 8或以上版本
- Maven 3.x或以上版本
- IDE(如IntelliJ IDEA或Eclipse)
- MySQL数据库
三、创建Spring Boot项目
您可以使用Spring Initializr创建一个新的Spring Boot项目,选择以下依赖:
- Spring Web
- MyBatis Framework
- MySQL Driver
- Spring Boot DevTools(可选)
四、配置数据库连接
在`application.properties`文件中添加数据库连接配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_demo spring.datasource.username=root spring.datasource.password=yourpassword spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.mapper-locations=classpath:mapper/*.xml
五、创建实体类和Mapper接口
假设我们有一个用户表`user`,包含以下字段:`id`, `name`, `email`。
5.1 创建实体类
package com.example.demo.entity; public class User { private Long id; private String name; private String email; // getters and setters }
5.2 创建Mapper接口
package com.example.demo.mapper; import com.example.demo.entity.User; import org.apache.ibatis.annotations.*; import java.util.List; @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(Long id); @Select("SELECT * FROM user") List<User> getAllUsers(); @Insert("INSERT INTO user(name, email) VALUES(#{name}, #{email})") @Options(useGeneratedKeys = true, keyProperty = "id") void insertUser(User user); @Update("UPDATE user SET name=#{name}, email=#{email} WHERE id=#{id}") void updateUser(User user); @Delete("DELETE FROM user WHERE id=#{id}") void deleteUser(Long id); }
六、创建Service和Controller
6.1 创建Service类
package com.example.demo.service; import com.example.demo.entity.User; import com.example.demo.mapper.UserMapper; 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 User getUserById(Long id) { return userMapper.getUserById(id); } public List<User> getAllUsers() { return userMapper.getAllUsers(); } public void insertUser(User user) { userMapper.insertUser(user); } public void updateUser(User user) { userMapper.updateUser(user); } public void deleteUser(Long id) { userMapper.deleteUser(id); } }
6.2 创建Controller类
package com.example.demo.controller; import com.example.demo.entity.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("/{id}") public User getUserById(@PathVariable Long id) { return userService.getUserById(id); } @GetMapping public List<User> getAllUsers() { return userService.getAllUsers(); } @PostMapping public void insertUser(@RequestBody User user) { userService.insertUser(user); } @PutMapping public void updateUser(@RequestBody User user) { userService.updateUser(user); } @DeleteMapping("/{id}") public void deleteUser(@PathVariable Long id) { userService.deleteUser(id); } }
七、运行项目并测试
启动Spring Boot应用程序,然后使用Postman或浏览器测试API。
- 获取所有用户:`GET http://localhost:8080/users`
- 根据ID获取用户:`GET http://localhost:8080/users/{id}`
- 添加用户:`POST http://localhost:8080/users`,请求体为JSON格式的用户信息
- 更新用户:`PUT http://localhost:8080/users`,请求体为JSON格式的用户信息
- 删除用户:`DELETE http://localhost:8080/users/{id}`