SpringBoot使用MyBatisPlus一键CRUD

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: SpringBoot使用MyBatisPlus一键CRUD

集成MyBatisPlus


<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.2</version>
</dependency>

引入依赖。

package com.example.bootmp;
import org.junit.jupiter.api.Test;
import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.annotation.MapperScans;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
// 表示扫描mapper包下的所有接口
@MapperScan("com.example.bootmp.mapper")
class BootMpApplicationTests {
    @Test
    void contextLoads() {
    }
}

Application启动类中配置注解@MapperScan,不过这不是必须的,所以我只在Test单元测试中添加了。

网络异常,图片无法展示
|

看看,是不是没有加。

但是这样的话,你需要每个Dao单独加上@Mapper注解。

注:@Mappermybatis自身带的注解,但是只是用一个@Mapper的话在service层调用时会爆红,但是不影响使用。

@Repositoryspring提供的注释,能够将该类注册成Bean。被依赖注入。

使用该注解后,在启动类上要加@Mapperscan,来表明Mapper类的位置。

可以单独使用@Mapper,也可以在@Mapper下面加一个@Repository就可以消除爆红,也可以使用@Repository但要在启动类上添加@Mapperscan(路径)

配置MySQL信息

SpringBoot的配置文件中配置信息,我这里比较喜欢用yml格式的配置。

server:
  port: 8088
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/user?useUnicode=true&amp&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: root
    password: 123456
mybatis-plus:
  configuration:
      //设置日志输出
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

我已经建立好了对应数据库与数据表。

网络异常,图片无法展示
|

然后我们可以编写实体类,在这说明一下,加入你的MySQL中字段命名格式与实体类格式不一样,但是都是常见格式时,我们可以配置MyBatisPlus,如,b_name可以自动的去对应实体类bName,这里不过多解释。

实体类

package com.example.bootmp.entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
 * @author JanYork
 * @date 2022/9/7 11:28
 * @description
 */
@Getter
@Setter
@ToString
public class User {
    private Integer id;
    private String name;
}

我这里使用了lombok一键生成GetSet

Dao层

有的喜欢用Dao命名,有的喜欢用Mapper,我是后者。

package com.example.bootmp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.bootmp.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
/**
 * @author JanYork
 * @date 2022/9/7 11:32
 * @description
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {
}

MyBatisPlus的环境下,我们只需要继承MyBatisPlus提供的BaseMapper类,并将实体类填入泛型后,他会自动生成许许多多常用的增删改查方法。

IDEA自动反编译class后可以看到这些方法。

网络异常,图片无法展示
|

比如我们使用单元测试调用一下看看:

网络异常,图片无法展示
|

不过规范的开发还需要Service层和Controller层。

Service层

package com.example.bootmp.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.bootmp.entity.User;
import com.example.bootmp.mapper.UserMapper;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * @author JanYork
 * @date 2022/9/7 11:37
 * @description
 */
@Service
public class UserService extends ServiceImpl<UserMapper, User> {
    @Resource
    private UserMapper userMapper;
}

也是非常简单,注入对应的Mapper接口,继承MyBatisPlus提供的ServiceImpl类,泛型中第一个参数是对应Mapper类,第二个是对应实体类。

Controller层

package com.example.bootmp.controller;
import com.alibaba.fastjson2.JSON;
import com.example.bootmp.entity.User;
import com.example.bootmp.service.UserService;
import com.example.bootmp.utils.R;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author JanYork
 * @date 2022/9/8 8:17
 * @description
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    @RequestMapping("/list")
    public Object list() {
        List<User> list = userService.list();
        return JSON.toJSONString(R.ok(list));
    }
}

Controller层就不需要多说了,@RestController@RequestMapping("/user")注解声明ControllerURL路径

@Autowired注入对应Service层,就可以开始写方法了。

@RequestMapping("/list")
public Object list() {
    List<User> list = userService.list();
    return JSON.toJSONString(R.ok(list));
}

我们来看这个方法,这里我用FastJSON来转换并返回JSON字符串。

我们Service里面,MyBatisPlus也是提供了常用增删改查方法。

网络异常,图片无法展示
|

userService.list()也就是查询所有的信息了,其他方法就暂不测试了。

返回工具类R

新手可能发现,我这里是返回了一个R类,这是干什么。

在规范开发中,我们通常需要为前端传输点数据外其他信息,比如状态码,状态说明等等。

为了方便,我们之间封装成方法调用并一键返回即可。

package com.example.bootmp.utils;
/**
 * @author JanYork
 * @date 2022/9/8 8:47
 * @description 通用返回类
 */
public class R {
    private Integer code;
    private String msg;
    private Object data;
    public R() {
    }
    public R(Integer code, String msg, Object data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
    public static R ok() {
        return new R(200, "success", null);
    }
    public static R ok(Object data) {
        return new R(200, "success", data);
    }
    public static R error() {
        return new R(500, "error", null);
    }
    public static R error(String msg) {
        return new R(500, msg, null);
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public Object getData() {
        return data;
    }
    public void setData(Object data) {
        this.data = data;
    }
}

msg就是说明,code就是状态码,data是数据信息。

这样返回的数据就较为规范,我们使用Postman调试看看。

网络异常,图片无法展示
|

图片有些模糊,我之间贴JSON信息。

{
    "code": 200,
    "data": [
        {
            "id": 1,
            "name": "JanYork_"
        },
        {
            "id": 5,
            "name": "111111"
        }
    ],
    "msg": "success"
}

code200,状态描述是成功(success),数据都在data里面,前端都不需要去一个个找,直接获取data就可以。

整体结构

网络异常,图片无法展示
|

下篇再见。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
NoSQL Java MongoDB
Springboot WebFlux项目结合mongodb进行crud
这篇文章介绍了如何使用Spring Boot WebFlux框架结合MongoDB进行基本的CRUD(创建、读取、更新、删除)操作,包括项目设置、实体类和Repository的创建、控制器的实现以及配置文件的编写。
69 0
Springboot WebFlux项目结合mongodb进行crud
|
2天前
|
SQL JavaScript Java
Spring Boot 3 整合 Mybatis-Plus 实现数据权限控制
本文介绍了如何在Spring Boot 3中整合MyBatis-Plus实现数据权限控制,通过使用MyBatis-Plus提供的`DataPermissionInterceptor`插件,在不破坏原有代码结构的基础上实现了细粒度的数据访问控制。文中详细描述了自定义注解`DataScope`的使用方法、`DataPermissionHandler`的具体实现逻辑,以及根据用户的不同角色和部门动态添加SQL片段来限制查询结果。此外,还展示了基于Spring Boot 3和Vue 3构建的前后端分离快速开发框架的实际应用案例,包括项目的核心功能模块如用户管理、角色管理等,并提供Gitee上的开源仓库
33 11
|
4月前
|
Java 关系型数据库 MySQL
创建一个SpringBoot项目,实现简单的CRUD功能和分页查询
【9月更文挑战第6天】该内容介绍如何使用 Spring Boot 实现具备 CRUD 功能及分页查询的项目。首先通过 Spring Initializr 创建项目并选择所需依赖;其次配置数据库连接,并创建实体类与数据访问层;接着构建服务层处理业务逻辑;最后创建控制器处理 HTTP 请求。分页查询可通过添加 URL 参数实现。
106 7
|
3月前
|
SQL Java 数据库连接
MyBatis-Plus:简化 CRUD 操作的艺术
MyBatis-Plus 是一个基于 MyBatis 的增强工具,它旨在简化 MyBatis 的使用,提高开发效率。
96 1
MyBatis-Plus:简化 CRUD 操作的艺术
|
3月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
699 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
3月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
220 1
|
3月前
|
Java 数据库连接 mybatis
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
该文档详细介绍了如何在Springboot Web项目中整合Mybatis,包括添加依赖、使用`@MapperScan`注解配置包扫描路径等步骤。若未使用`@MapperScan`,系统会自动扫描加了`@Mapper`注解的接口;若使用了`@MapperScan`,则按指定路径扫描。文档还深入分析了相关源码,解释了不同情况下的扫描逻辑与优先级,帮助理解Mybatis在Springboot项目中的自动配置机制。
201 0
Springboot整合Mybatis,MybatisPlus源码分析,自动装配实现包扫描源码
|
4月前
|
XML Java 关系型数据库
springboot 集成 mybatis-plus 代码生成器
本文介绍了如何在Spring Boot项目中集成MyBatis-Plus代码生成器,包括导入相关依赖坐标、配置快速代码生成器以及自定义代码生成器模板的步骤和代码示例,旨在提高开发效率,快速生成Entity、Mapper、Mapper XML、Service、Controller等代码。
springboot 集成 mybatis-plus 代码生成器
|
4月前
|
SQL XML Java
springboot整合mybatis-plus及mybatis-plus分页插件的使用
这篇文章介绍了如何在Spring Boot项目中整合MyBatis-Plus及其分页插件,包括依赖引入、配置文件编写、SQL表创建、Mapper层、Service层、Controller层的创建,以及分页插件的使用和数据展示HTML页面的编写。
springboot整合mybatis-plus及mybatis-plus分页插件的使用
|
3月前
|
SQL Java 数据库连接
Mybatis方式完成CRUD操作
Mybatis方式完成CRUD操作
56 0
下一篇
开通oss服务