问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Spring Boot使用MyBatis-Plus访问MySQL的配置流程

创作时间:
作者:
@小白创作中心

Spring Boot使用MyBatis-Plus访问MySQL的配置流程

引用
CSDN
1.
https://blog.csdn.net/qq1910506668/article/details/136608184

本文将详细介绍如何在已有的Spring Boot 2.x项目中配置MyBatis-Plus访问MySQL数据库。包括使用Wrapper进行基本的增删改查操作,以及通过自定义Mapper.xml实现更复杂的数据库交互。

1. 打开项目

打开需要操作的项目,这里打开了一个空项目,项目文件结构如图所示。

2. 添加依赖项

pom.xml中添加依赖,添加位置是Dependencies标签之间,添加内容如下:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.4</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<!--lombok-->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.24</version>
    <scope>provided</scope>
</dependency>

可修改版本号为自己喜欢的版本(删除现有版本号会自动提示),其中若发现程序有错需要改回来!!!加好之后的样子。

3. 添加配置

application.yml中添加相关配置,数据库的IP端口、用户名、密码需要换成自己的。mapper-locations中的classpath指的是resource文件夹,添加完成之后有爆红,需要重新加载项目。

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&serverTimezone=GMT%2B8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
#
mybatis-plus:
  mapper-locations: classpath:mapper/*.xml                #对应mapper映射xml文件所在路径
  type-aliases-package: com.example.demo.entity          #对应实体类路径

添加完成之后内容如下(仅使用简单的wrapper而不自定义一些数据库的方法的话,mapper-locations不要也可以)。在资源管理器右键项目名,在maven子选项中选择重新加载项目。最终效果就是yml文件中刚刚爆红的内容不爆红了,就不放图了。

4. 新增entity实体

提前说明:本文使用了一个名为user的表,表里只有idname两个字段。项目本身带有demos.web的文件夹,里面也有user相关的内容,这和本文内容无关,本文内容是直接在demo目录下创建的,选择的时候别选错了。

4.1 新建entity

demo下新建文件夹entity并在里面新建实体类User.java,输入内容如下:

@Data
public class User {
    private int id;
    private String name;
}

结果如下。

5. 新增mapper

5.1 新建mapper

demo下新建文件夹mapper并新建接口UserMapper

5.2 新增mapper.xml(可选)

由于增删改查使用的是BaseMapper类写好的方法,可以通过wrapper直接调用。因此这里只需要写出按id查数据这个自定义的数据接口就可以了,如果仅使用wrapper相关的内容,可以不用做这一步。

mapper文件夹下的UserMapper接口类新增内容如下:

List<User> finduserbyid(int id);

resource下新建mapper文件夹,并新建usermapping.xml,添加以下内容。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="com.example.demo.mapper.UserMapper">
    <select id="finduserbyid" resultType="com.example.demo.entity.User">
        select * from user where id = #{id}
    </select>
</mapper>

6. 创建userService及userserviceimpl

其中UserService内容为,其中前四个增删改查用的,最后一个为自定义查询函数用的,可以按需要删减。

package com.example.demo.service;
import com.example.demo.entity.User;
import java.util.List;
public interface UserService {
    public String add(String name);
    public List<User> query();
    public String update(int id, String name);
    public String delete(int id);
    public List<User> finduserbyid(int id);
}

userServiceImpl内容为:

![](https://wy-static.wenxiaobai.com/chat-rag-image/12881759084738588920)
package com.example.demo.service.Impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceimpl implements UserService {
    @Autowired
    private UserMapper userMapper;
    public String add(String name) {
        User user = new User();
        user.setName(name);
        userMapper.insert(user);
        return "操作成功";
    }
    public List<User> query() {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        return userMapper.selectList(queryWrapper);
    }
    public String update(int id, String name) {
        LambdaUpdateWrapper<User> updateWrapper = new LambdaUpdateWrapper<>();
        updateWrapper.set(User::getName, name);
        updateWrapper.eq(User::getId, id);
        userMapper.update(updateWrapper);
        return "操作成功";
    }
    public String delete(int id) {
        LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(User::getId, id);
        userMapper.delete(queryWrapper);
        return "操作成功";
    }
    public List<User> finduserbyid(int id) {
        return userMapper.finduserbyid(id);
    }
}

serviceimpl对应了service里面定义的函数,实际截图不放了,有点长,反正一样的。。。

7. 添加controller

demo目录下创建controller文件夹,并创建UserController。添加内容:

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("myuser")
public class UserController {
    @Autowired
    public UserService userService;
    @PostMapping(value = "add")
    public String add(@RequestParam(value = "name") String name) {
        return userService.add(name);
    }
    @GetMapping(value = "query")
    public List<User> query() {
        return userService.query();
    }
    @PostMapping(value = "update")
    public String update(@RequestParam(value = "id") int id, @RequestParam(value = "name") String name) {
        return userService.update(id, name);
    }
    @PostMapping(value = "delete")
    public String delete(@RequestParam(value = "id") int id) {
        return userService.delete(id);
    }
    @GetMapping(value = "find")
    public List<User> finduserbyid(@RequestParam(value = "id") int id){
        return userService.finduserbyid(id);
    }
}

8. 主程序加注解

在主程序加:

@MapperScan("com.example.demo.mapper")

9. 项目,启动!

右键DemoApplication运行,并通过浏览器访问localhost:8080/myuser/query,看到数据库中随便插入的数据。通过访问localhost:8080/myuser/find?id=1可以看到查询的结果。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号