Spring Boot与MyBatis的集成应用
今天我们来聊聊Spring Boot与MyBatis的集成应用。MyBatis是一款优秀的持久层框架,它消除了几乎所有的JDBC代码和手动设置参数以及获取结果集的工作。通过与Spring Boot的集成,可以更简洁、高效地进行数据库操作。本文将详细介绍如何在Spring Boot项目中集成MyBatis。
一、创建Spring Boot项目
首先,我们需要创建一个Spring Boot项目,可以通过Spring Initializr来快速创建。在项目创建过程中,选择以下依赖:
- Spring Web
- MyBatis Framework
- MySQL Driver
项目创建完成后,我们需要进行一些基础配置。
二、配置数据库连接
在application.properties
文件中添加数据库连接信息:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.type-aliases-package=cn.juwatech.entity mybatis.mapper-locations=classpath:mapper/*.xml
三、创建数据库实体类
接下来,我们创建一个数据库实体类。例如,一个简单的用户实体类:
package cn.juwatech.entity; public class User { private Long id; private String username; private String password; // getters and setters public Long getId() { return id; } public void setId(Long 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; } }
四、创建MyBatis Mapper接口
接下来,我们创建一个Mapper接口,并定义数据库操作方法。Mapper接口与MyBatis映射文件对应:
package cn.juwatech.mapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import cn.juwatech.entity.User; import java.util.List; @Mapper public interface UserMapper { @Select("SELECT * FROM users") List<User> findAll(); User findById(Long id); void insert(User user); void update(User user); void delete(Long id); }
五、创建MyBatis映射文件
在resources/mapper
目录下创建对应的XML映射文件UserMapper.xml
:
<?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="cn.juwatech.mapper.UserMapper"> <select id="findById" resultType="cn.juwatech.entity.User"> SELECT * FROM users WHERE id = #{id} </select> <insert id="insert"> INSERT INTO users (username, password) VALUES (#{username}, #{password}) </insert> <update id="update"> UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id} </update> <delete id="delete"> DELETE FROM users WHERE id = #{id} </delete> </mapper>
六、创建Service层
在Service层中,我们调用Mapper接口的方法,实现业务逻辑:
package cn.juwatech.service; import cn.juwatech.entity.User; import cn.juwatech.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 List<User> findAll() { return userMapper.findAll(); } public User findById(Long id) { return userMapper.findById(id); } public void insert(User user) { userMapper.insert(user); } public void update(User user) { userMapper.update(user); } public void delete(Long id) { userMapper.delete(id); } }
七、创建Controller层
最后,在Controller层中,我们通过Service层调用业务逻辑,处理HTTP请求:
package cn.juwatech.controller; import cn.juwatech.entity.User; import cn.juwatech.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> findAll() { return userService.findAll(); } @GetMapping("/{id}") public User findById(@PathVariable Long id) { return userService.findById(id); } @PostMapping public void insert(@RequestBody User user) { userService.insert(user); } @PutMapping("/{id}") public void update(@PathVariable Long id, @RequestBody User user) { user.setId(id); userService.update(user); } @DeleteMapping("/{id}") public void delete(@PathVariable Long id) { userService.delete(id); } }
八、总结
通过上述步骤,我们已经完成了Spring Boot与MyBatis的集成应用。从数据库配置、实体类创建、Mapper接口定义到Service层和Controller层的实现,我们完成了一个简单的CRUD示例。