首頁 >Java >java教程 >Spring Boot中使用MyBatis實現資料存取和持久化

Spring Boot中使用MyBatis實現資料存取和持久化

WBOY
WBOY原創
2023-06-22 14:37:571451瀏覽

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實現資料存取和持久化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn