spring boot使用mybatisplus访问mysql的配置流程

网上教程大多教人新建一个带对应组件的项目,本文记录如何在一个已有springboot2.x项目中,配置使用mybatisplus来访问mysql。包括使用wrapper和自己写mapper.xml的自定义函数两种和数据库交互的方式。

关于项目的创建,参考创建springboot 2.x web空项目(IDEA),本文使用的项目即为按该链接创建的空项目。

项目配置前提:需要一个配置好的MySQL数据库,并建立相应的角色和数据表。

实现内容:1.通过wrapper实现的增删改查;2.通过自定义mapper.xml实现的通过id查找数据。

正文

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的表,表里只有id和name两个字段。项目本身带有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接口类新增内容如下

java 复制代码
List<User> finduserbyid(int id);

在resource下新建mapper文件夹,并新建usermapping.xml,添加以下内容。xml的对齐功能比较难用,可能需要手工对齐成自己喜欢的样子。

java 复制代码
<?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内容为,其中前四个增删改查用的,最后一个为自定义查询函数用的,可以按需要删减。

java 复制代码
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内容为

java 复制代码
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

添加内容

java 复制代码
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可以看到查询的结果

相关推荐
L.EscaRC11 分钟前
Redisson在Spring Boot中的高并发应用解析
java·spring boot·后端
苏三的开发日记20 分钟前
MySQL事务隔离级别及S与X锁
后端
阑梦清川24 分钟前
claude全面封杀国产IDE,trae已经无法使用claude大模型了
后端
Naylor28 分钟前
玩转kafka
spring boot·kafka
摇滚侠30 分钟前
Spring Boot3零基础教程,StreamAPI 介绍,笔记98
java·spring boot·笔记
lzptouch30 分钟前
Django项目
后端·python·django
Emrys_1 小时前
🚀 深入理解Java并发“王牌”:ConcurrentHashMap
后端
金銀銅鐵1 小时前
[Java] 浅析 Map.of(...) 方法和 Map.ofEntries(...) 方法
java·后端
摇滚侠1 小时前
Spring Boot3零基础教程,StreamAPI 的基本用法,笔记99
java·spring boot·笔记