码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot实现集成Mybatis-Plus和SwaggerUI——基于SpringBoot和Vue的后台管理系统项目系列博客(八)


    系列文章目录

    1. 系统功能演示——基于SpringBoot和Vue的后台管理系统项目系列博客(一)
    2. Vue2安装并集成ElementUI——基于SpringBoot和Vue的后台管理系统项目系列博客(二)
    3. Vue2前端主体框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(三)
    4. SpringBoot后端初始框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(四)
    5. SpringBoot集成Mybatis——基于SpringBoot和Vue的后台管理系统项目系列博客(五)
    6. SpringBoot实现增删改查——基于SpringBoot和Vue的后台管理系统项目系列博客(六)
    7. SpringBoot实现分页查询——基于SpringBoot和Vue的后台管理系统项目系列博客(七)
    8. SpringBoot实现集成Mybatis-Plus和SwaggerUI——基于SpringBoot和Vue的后台管理系统项目系列博客(八)
    9. Vue实现增删改查——基于SpringBoot和Vue的后台管理系统项目系列博客(九)
    10. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
    11. Vue使用路由——基于SpringBoot和Vue的后台管理系统项目系列博客(十一)
    12. SpringBoot和Vue实现导入导出——基于SpringBoot和Vue的后台管理系统项目系列博客(十二)
    13. SpringBoot和Vue实现用户登录注册与异常处理——基于SpringBoot和Vue的后台管理系统项目系列博客(十三)
    14. SpringBoot和Vue实现用户个人信息展示与保存与集成JWT——基于SpringBoot和Vue的后台管理系统项目系列博客(十四)
    15. SpringBoot和Vue实现文件上传与下载——基于SpringBoot和Vue的后台管理系统项目系列博客(十五)
    16. SpringBoot和Vue整合ECharts——基于SpringBoot和Vue的后台管理系统项目系列博客(十六)
    17. SpringBoot和Vue实现权限菜单功能——基于SpringBoot和Vue的后台管理系统项目系列博客(十七)
    18. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)
    19. 用户前台页面设计与实现——基于SpringBoot和Vue的后台管理系统项目系列博客(十九)
    20. SpringBoot集成Redis实现缓存——基于SpringBoot和Vue的后台管理系统项目系列博客(二十)
    21. SpringBoot和Vue集成高德地图——基于SpringBoot和Vue的后台管理系统项目系列博客(二十一)
    22. SpringBoot和Vue集成视频播放组件——基于SpringBoot和Vue的后台管理系统项目系列博客(二十二)
    23. SpringBoot和Vue集成Markdown和多级评论——基于SpringBoot和Vue的后台管理系统项目系列博客(二十三)

    项目资源下载

    1. GitHub下载地址
    2. Gitee下载地址
    3. 项目MySql数据库文件

    文章目录

    • 系列文章目录
    • 项目资源下载
    • 前言
    • 一、集成Swagger-Ui
    • 二、集成Mybatis-Plus
    • 三、使用Mybatis-Plus重构增删改查方法
    • 四、使用Mybatis-Plus重构动态多条件分页模糊查询
    • 总结


    前言

      今天博客的主要内容包括:集成Swagger-UI、集成Mybatis-Plus、使用Mybatis-Plus重构增删改查方法、使用Mybatis-Plus重构动态多条件分页模糊查询等内容。可以看到我们项目以后基本都要使用Mybatis-Plus来与数据库进行交互了。下面就开始今天的学习吧!


    一、集成Swagger-Ui

    1. 为了我们后续方便的进行调试,所以我们在项目中集成Swqgger-Ui。首先在pom.xml中引入Swagger-Ui的依赖
      在这里插入图片描述
    2. 然后在application.yml中加入如下内容,为了解决Springboot与Swagger-Ui版本不兼容的问题
      在这里插入图片描述
    3. 在config目录下新建SwaggerConfig.java
      在这里插入图片描述
    4. 在SwaggerConfig.java中加入以下代码,要注意名称等要换成自己的
    package com.ironmanjay.springboot.config;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.oas.annotations.EnableOpenApi;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.service.Contact;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    
    @Configuration
    @EnableOpenApi
    public class SwaggerConfig {
    
        /**
         * 创建API应用
         * apiInfo() 增加API相关信息
         * 通过select()函数返回一个ApiSelectorBuilder实例,用来控制哪些接口暴露给Swagger来展现,
         * 本例采用指定扫描的包路径来定义指定要建立API的目录。
         *
         * @return
         */
        @Bean
        public Docket restApi() {
            return new Docket(DocumentationType.SWAGGER_2)
                    .groupName("标准接口")
                    .apiInfo(apiInfo("Spring Boot中使用Swagger2构建RESTful APIs", "1.0"))
                    .useDefaultResponseMessages(true)
                    .forCodeGeneration(false)
                    .select()
                    .apis(RequestHandlerSelectors.basePackage("com.ironmanjay.springboot.controller"))
                    .paths(PathSelectors.any())
                    .build();
        }
    
        /**
         * 创建该API的基本信息(这些基本信息会展现在文档页面中)
         * 访问地址:http://ip:port/swagger-ui.html
         *
         * @return
         */
        private ApiInfo apiInfo(String title, String version) {
            return new ApiInfoBuilder()
                    .title(title)
                    .description("更多请关注: https://blog.csdn.net/IronmanJay?spm=1003.2020.3001.5343")
                    .termsOfServiceUrl("https://blog.csdn.net/IronmanJay?spm=1003.2020.3001.5343")
                    .contact(new Contact("IronmanJay", "https://blog.csdn.net/IronmanJay?spm=1003.2020.3001.5343", "1975686676@qq.com"))
                    .version(version)
                    .build();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    1. 最后访问http://localhost:9090/swagger-ui/index.html测试一下,发现集成Swagger-Ui成功
      在这里插入图片描述

    二、集成Mybatis-Plus

    1. 首先在pom.xml中引入Mybatis-Plus的依赖
      在这里插入图片描述
    2. 在此目录下新建MybatisPlusConfig.java
      在这里插入图片描述
    3. 在其中引入Mybatis-Plus分页插件,需要注意我标红的地方需要与你项目一致
      在这里插入图片描述
    4. 将UserMapper.java中原来的@Mapper删除即可
      在这里插入图片描述
    5. 在application.yml中修改日志的配置
      在这里插入图片描述
    6. 然后我们需要测试Mybatis-Plus是否生效
      ①:首先使用Postman测试,发现没有问题
      在这里插入图片描述
      ②:数据更新也没有问题
      在这里插入图片描述

    三、使用Mybatis-Plus重构增删改查方法

    1. 首先将UserMapper.java中继承基础Mapper
      在这里插入图片描述
    2. 然后在UserService.java中继承服务接口
      在这里插入图片描述
    3. 然后在UserController.java中重写save方法,返回boolean类型,并且写我们自己的保存方法
      在这里插入图片描述
    4. 然后回到UserService.java中,可以把原来的都删掉了,使用Mybatis-Plus非常简单的就实现了这个功能
      在这里插入图片描述
    5. 然后来到User.java中,分别设置数据库名称识别与主键自增
      在这里插入图片描述
    6. 最后我们测试一下,是否成功,我们将id为1的用户address修改为地球。我们发现,修改成功
      在这里插入图片描述
    7. 同样我们也可以使用Mybatis-Plus写好的方法来查询所有数据
      在这里插入图片描述
    8. 数据删除同理
      在这里插入图片描述

    四、使用Mybatis-Plus重构动态多条件分页模糊查询

    1. 在使用Mybatis-Plus重写方法之前,要把之前写的关于UserMapper的内容都删掉,如下所示
      在这里插入图片描述
      在这里插入图片描述
    2. 然后将UserController.java中的分页查询方法(findPage)修改为如下简单的内容,就可以实现多条件分页模糊查询了
    /**
     * 分页查询接口
     * 接口路径:/user/page
     *
     * @param pageNum  = (pageNum - 1) * pageSize
     * @param pageSize = pageSize
     * @param username 用户名
     * @param email    邮箱
     * @param address  地址
     * @return 返回分页用户信息
     * @RequestParam 接收?pageNum=1&pageSize=10
     */
    @GetMapping("page")
    public IPage<User> findPage(@RequestParam Integer pageNum, @RequestParam Integer pageSize, @RequestParam(defaultValue = "") String username, @RequestParam(defaultValue = "") String email, @RequestParam(defaultValue = "") String address) {
        IPage<User> page = new Page<>(pageNum, pageSize);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        if (!"".equals(username)) {
            queryWrapper.like("username", username);
        }
        if (!"".equals(email)) {
            queryWrapper.like("email", email);
        }
        if (!"".equals(address)) {
            queryWrapper.like("address", address);
        }
        queryWrapper.orderByDesc("id");
        return userService.page(page, queryWrapper);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    1. 然后使用Postman验证一下,发现成功了
      在这里插入图片描述

    总结

      到目前为止我们已经使用Mybatis-Plus替换了项目中的Mybatis内容,发现我们的代码变得更简单了,下面就是将数据与Vue前端交互了,此部分内容在下篇内容中呈现,明天见!

  • 相关阅读:
    【Linux】常用工具的使用
    Seata概述
    目标检测YOLO实战应用案例100讲-基于改进的YOLOV5算法的垃圾分类模型
    PaddleOCR训练手写文字识别模型
    利用单片机余晖依次显示,同时显示 数码管的数字
    新手学习PLC
    入行3D建模难不难学习?10年建模师:这3种人,一辈子都学不会
    java.lang.Enum类下toString()方法起什么作用呢?
    2023年软考时间流程安排:
    自动化密码分析
  • 原文地址:https://blog.csdn.net/IronmanJay/article/details/127609651
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号