Spring Boot中使用MyBatis实现数据访问和持久化

Spring Boot是一种快速开发框架,可以帮助开发人员快速搭建WEB应用程序。而MyBatis是一种优秀的ORM框架,可以简化Java与数据库之间的数据访问和持久化。本文将介绍如何在Spring Boot中使用MyBatis实现数据访问和持久化。

一、Spring Boot集成MyBatis

  1. 添加依赖

在pom.xml文件中添加MyBatis和MySQL依赖:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.42</version>
</dependency>

这里我们使用mybatis-spring-boot-starter来集成MyBatis。

  1. 配置数据源

在application.properties中添加数据库连接属性:

spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver

这里我们使用MySQL数据库,并且使用root账户连接,密码为123456。

  1. 配置MyBatis

Spring Boot默认会自动扫描mapper路径,我们只需要在application.properties中配置mapper路径即可:

mybatis.mapper-locations=classpath:mapper/*.xml

该配置表示mapper文件在项目的classpath下的mapper文件夹中。

在完成以上配置后,Spring Boot就已经完成了对MyBatis的集成工作。

二、编写实体类和Mapper

  1. 编写实体类

定义一个User类,表示数据库中的一张用户表:

public class User {
    private Long id;
    private String name;
    private Integer age;
    // 省略getter和setter方法
}
  1. 编写Mapper

定义一个UserMapper接口,用于定义User表的增删改查操作:

public interface UserMapper {
    void saveUser(User user);
    void updateUser(User user);
    void deleteUser(Long id);
    User findUserById(Long id);
    List<User> findAllUsers();
}

这里我们定义了增删改查以及查询所有用户的方法。

三、编写Mapper.xml

接下来,我们需要编写UserMapper.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.demo.mapper.UserMapper">
    <insert id="saveUser" parameterType="com.example.demo.entity.User">
        insert into user(name, age) values (#{name}, #{age})
    </insert>

    <update id="updateUser" parameterType="com.example.demo.entity.User">
        update user set name = #{name}, age = #{age} where id = #{id}
    </update>

    <delete id="deleteUser" parameterType="java.lang.Long">
        delete from user where id = #{id}
    </delete>

    <select id="findUserById" parameterType="java.lang.Long"
            resultType="com.example.demo.entity.User">
        select * from user where id = #{id}
    </select>

    <select id="findAllUsers" resultType="com.example.demo.entity.User">
        select * from user
    </select>
</mapper>

在该文件中,我们实现了UserMapper中定义的所有方法,其中parameterType表示参数类型,resultType表示返回值类型。

四、编写Service类和控制器

  1. 编写Service类

定义一个UserService类,用于封装对User表的操作:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public void saveUser(User user) {
        userMapper.saveUser(user);
    }

    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

    public void deleteUser(Long id) {
        userMapper.deleteUser(id);
    }

    public User findUserById(Long id) {
        return userMapper.findUserById(id);
    }

    public List<User> findAllUsers() {
        return userMapper.findAllUsers();
    }
}

在这个类中,我们使用@Autowired注解注入了UserMapper,即可以使用UserMapper中定义的方法。

  1. 编写控制器

定义一个UserController类,实现对用户的增删改查操作:

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("/")
    public String saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return "success";
    }

    @PutMapping("/")
    public String updateUser(@RequestBody User user) {
        userService.updateUser(user);
        return "success";
    }

    @DeleteMapping("/{id}")
    public String deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);
        return "success";
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.findUserById(id);
    }

    @GetMapping("/")
    public List<User> findAllUsers() {
        return userService.findAllUsers();
    }
}

在这个类中,我们使用@RestController注解表示当前类是一个控制器,使用@RequestMapping注解指定了访问路径。同时,使用@Autowired注解注入了UserService,即可以使用UserService中定义的方法。

五、测试

现在,我们已经完成了整个项目的搭建和代码编写。接下来,我们可以使用Postman等工具来测试控制器中定义的API。

使用POST请求来保存用户信息,请求体为:

{
    "name": "张三",
    "age": 18
}

使用PUT请求来更新用户信息,请求体为:

{
    "id": 1,
    "name": "李四",
    "age": 20
}

使用DELETE请求来删除用户信息,URL为:

http://localhost:8080/user/1

使用GET请求来获取用户信息,URL为:

http://localhost:8080/user/1

使用GET请求来获取所有用户信息,URL为:

http://localhost:8080/user/

六、总结

本文介绍了如何在Spring Boot中使用MyBatis实现数据访问和持久化,并使用了一个简单的示例来说明整个流程。MyBatis可以使得Java程序对数据库的操作变得更加高效和简洁,如果您需要在Spring Boot中实现对数据库的操作,可以考虑使用MyBatis。

以上就是Spring Boot中使用MyBatis实现数据访问和持久化的详细内容,更多请关注其它相关文章!