SpringBoot整合Mybatis实现增删改查功能

目录

1. 添加依赖

2. 配置数据源和MyBatis

3. 创建实体类

4. Mapper 接口与映射文件

5. 编写服务层

6. 控制器


Spring Boot 整合 MyBatis 是一个相对直接的过程,主要涉及添加依赖、配置数据源、配置 MyBatis、创建实体类、Mapper 接口和映射文件、以及编写服务层来实现增删改查功能。

下面将一步步指导完成整个集成过程。

1. 添加依赖

pom.xml 文件中添加 Spring Boot Starter for MyBatis 的依赖,以及数据库驱动依赖(这里以 MySQL 为例):

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Spring Boot Starter Data JPA (For Database Connectivity, but we use MyBatis) -->
    <!-- 注意:此处添加JPA是为了演示Spring Boot的数据源配置,实际使用MyBatis时可以不加 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- MyBatis Spring Boot Starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.3.0</version> <!-- 请检查最新版本 -->
    </dependency>

    <!-- MySQL Driver -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>

2. 配置数据源和MyBatis

application.propertiesapplication.yml 中配置数据库连接信息和MyBatis的相关设置:

spring.datasource.url=jdbc:mysql://localhost:3306/yourdb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.type-aliases-package=com.example.demo.entity
mybatis.mapper-locations=classpath:mapper/*.xml

3. 创建实体类

假设我们有一个用户表 users,对应的实体类 User.java 可能如下:

package com.example.demo.entity;

public class User {
    private Long id;
    private String name;
    private String email;

    // Getter and Setter methods...
}

4. Mapper 接口与映射文件

创建一个 Mapper 接口 UserMapper.java 和对应的 XML 映射文件 UserMapper.xml

UserMapper.java

package com.example.demo.mapper;

import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {
    User findById(Long id);
    void insertUser(User user);
    void updateUser(User user);
    void deleteUser(Long id);
}

UserMapper.xml (位于 resources/mapper 目录下)

<?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">
    <resultMap id="UserResultMap" type="com.example.demo.entity.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="email" column="email"/>
    </resultMap>

    <select id="findById" resultMap="UserResultMap">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <insert id="insertUser">
        INSERT INTO users(name, email) VALUES(#{name}, #{email})
    </insert>

    <update id="updateUser">
        UPDATE users SET name=#{name}, email=#{email} WHERE id=#{id}
    </update>

    <delete id="deleteUser">
        DELETE FROM users WHERE id=#{id}
    </delete>
</mapper>

5. 编写服务层

创建一个 UserService 类来调用 Mapper 接口实现增删改查操作。

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;

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

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

    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. 控制器

最后,创建一个 UserController 来处理 HTTP 请求,调用 UserService 完成业务逻辑。

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.*;

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

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

    @PostMapping
    public void addUser(@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 整合 MyBatis 实现基本的增删改查功能就完成了。

你可以启动应用并使用 Postman 或类似工具测试这些 API。

记得先确保你的数据库连接信息正确,并且已创建相应的表结构。

  • 18
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot中,我们可以使用Spring Data JPA来操作数据库。它提供了一些简单的接口,可以方便地进行增删改查操作。同时,在与vue结合的前端页面中,我们可以使用Axios库来发送HTTP请求,从而与后端进行数据交互。 下面以一个简单的示例为例,介绍如何在Spring Boot+vue中实现数据库的增删改查操作: 1. 定义实体类 首先,我们需要定义一个实体类,用于映射数据库中的表。例如,我们定义一个User类: ```java @Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "name") private String name; @Column(name = "age") private Integer age; // getter和setter方法省略 } ``` 2. 创建数据访问层 在Spring Boot中,我们可以使用Spring Data JPA来访问数据库。首先,我们需要创建一个数据访问层接口,例如UserRepository: ```java @Repository public interface UserRepository extends JpaRepository<User, Long> { } ``` 这里,我们继承了JpaRepository接口,它提供了一些基本的数据访问方法,例如save、findAll、findById等。 3. 创建业务逻辑层 在业务逻辑层中,我们可以调用数据访问层的方法,对数据库进行增删改查操作。例如,我们创建一个UserService类: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> findAll() { return userRepository.findAll(); } public User findById(Long id) { return userRepository.findById(id).orElse(null); } public User save(User user) { return userRepository.save(user); } public void deleteById(Long id) { userRepository.deleteById(id); } } ``` 在这个示例中,我们定义了findAll、findById、save和deleteById这几个方法,分别对应查询所有用户、根据ID查询用户、保存用户和删除用户的操作。 4. 创建控制器 在Spring Boot中,我们可以使用@RestController注解来创建一个控制器。例如,我们创建一个UserController: ```java @RestController @RequestMapping("/api/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 User save(@RequestBody User user) { return userService.save(user); } @DeleteMapping("/{id}") public void deleteById(@PathVariable Long id) { userService.deleteById(id); } } ``` 在这个示例中,我们定义了findAll、findById、save和deleteById这几个接口,分别对应查询所有用户、根据ID查询用户、保存用户和删除用户的操作。 5. 创建前端页面 在前端页面中,我们可以使用Axios库来发送HTTP请求,从而与后端进行数据交互。例如,我们创建一个user.vue页面: ```html <template> <div> <table> <thead> <tr> <th>ID</th> <th>Name</th> <th>Age</th> <th>操作</th> </tr> </thead> <tbody> <tr v-for="user in users" :key="user.id"> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.age }}</td> <td> <button @click="edit(user)">编辑</button> <button @click="remove(user)">删除</button> </td> </tr> </tbody> </table> <form v-if="showForm" @submit.prevent="save"> <input type="text" v-model="user.name" placeholder="Name"> <input type="number" v-model="user.age" placeholder="Age"> <button type="submit">保存</button> </form> <button @click="add">添加用户</button> </div> </template> <script> import axios from 'axios' export default { data () { return { users: [], user: {}, showForm: false } }, mounted () { axios.get('/api/users').then(response => { this.users = response.data }) }, methods: { add () { this.user = {} this.showForm = true }, edit (user) { this.user = { ...user } this.showForm = true }, save () { if (this.user.id) { axios.put(`/api/users/${this.user.id}`, this.user).then(response => { const index = this.users.findIndex(u => u.id === response.data.id) this.users.splice(index, 1, response.data) }) } else { axios.post('/api/users', this.user).then(response => { this.users.push(response.data) }) } this.showForm = false }, remove (user) { axios.delete(`/api/users/${user.id}`).then(() => { const index = this.users.findIndex(u => u.id === user.id) this.users.splice(index, 1) }) } } } </script> ``` 在这个示例中,我们使用了Axios库来发送HTTP请求,从而与后端进行数据交互。其中,mounted方法在页面加载时调用findAll接口,获取所有用户数据。add和edit方法用于显示和隐藏表单,save方法用于保存表单数据,remove方法用于删除用户数据。 至此,我们就完成了在Spring Boot+vue中实现数据库的增删改查操作的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值