SpringBoot配置Swagger和MybatisPlus

server/2024/12/23 0:37:03/

SpringBoot配置Swagger和MybatisPlus

  • 前言
  • 1. 配置Swagger
    • 1)导入依赖
    • 2)修改配置文件application.yml
    • 3)在启动类Application.java中开启
    • 4)创建一个testController.java测试
    • 5)启动项目测试
  • 2. 配置MybatisPlus
    • 1)引入依赖
    • 2)修改配置文件application.yml
    • 3) 在启动类中映射Mapper
    • 4)创建UserInfo.java对象
    • 5)创建UserInfoMapper.java
    • 6) 创建UserInfoService.java
    • 7) 创建UserInfoServiceImpl.java实现类
    • 8) 创建testController 测试
    • 9) 启动项目测试
    • 10) Mybatis的基础用法
    • 11) MybatisPlus的用法
  • 参考博客

前言

在快速迭代的开发环境中,文档与高效的ORM框架是提升开发效率与质量的关键。本文旨在介绍如何在Spring Boot项目中集成Swagger和MyBatis Plus。Swagger为API提供强大的自动生成文档功能,助力前后端分离开发;而MyBatis Plus则以其简洁的CRUD操作和丰富的功能,极大地简化了数据库操作。两者的结合,将为你的Spring Boot项目带来前所未有的开发体验。

在配置之前请先确保已经创建好SpringBoot基础模板

Swagger_5">1. 配置Swagger

1)导入依赖

<!--swagger-->
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version>
</dependency>

2)修改配置文件application.yml

spring:application:name: SwaggerMybatisPlusmvc:pathmatch:matching-strategy: ant_path_matcher
knife4j:enable: true

java_28">3)在启动类Application.java中开启

java">package com.demo.swaggermybatisplus;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@EnableSwagger2
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

java_49">4)创建一个testController.java测试

java">package com.demo.swaggermybatisplus.controller;import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** @ClassName testController* @Description* @Author Chen* @Date 2024/12/19 22:16* @Version 1.0**/
@RestController
@Api(tags = "test接口")
public class testController {@GetMapping@ApiOperation("test-get")public long test(Integer id) {long l = System.currentTimeMillis();return l + id;}
}

5)启动项目测试

启动项目后访问http://localhost:8080/doc.html#/home
ui界面如下
在这里插入图片描述
选择设置的接口,填写参数,点击发送即可看到响应结果
在这里插入图片描述
上面已经实现了接口文档访问,接下来再配置MybastisPlus

2. 配置MybatisPlus

1)引入依赖

配置mybatis自然得配置mysql测试

<!--mybatis-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>8.0.21</version>
</dependency>
<!-- druid依赖 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.3</version>
</dependency>
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

2)修改配置文件application.yml

spring:application:name: SwaggerMybatisPlusmvc:pathmatch:matching-strategy: ant_path_matcherdatasource: #定义数据源#127.0.0.1为本机测试的ip,3306是mysql的端口号。serverTimezone是定义时区,照抄就好,mysql高版本需要定义这些东西#useSSL也是某些高版本mysql需要问有没有用SSL连接url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/chatai?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: root  #数据库用户名,root为管理员password: root  #该数据库用户的密码type: com.alibaba.druid.pool.DruidDataSource  # 使用druid数据源
mybatis:config-location: classpath:mybatis.cfg.xml    #  mybatis主配置文件所在路径type-aliases-package: com.demo.drools.entity  #  定义所有操作类的别名所在包mapper-locations:                                     #  所有的mapper映射文件- classpath:mapper/*.xml# mybatis-plus相关配置
mybatis-plus:# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XML 文件位置)mapper-locations: classpath:mapper/*.xml# 以下配置均有默认值,可以不设置global-config:db-config:#主键类型 AUTO:"数据库ID自增" INPUT:"用户输入ID",ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";id-type: auto#字段策略 IGNORED:"忽略判断"  NOT_NULL:"非 NULL 判断")  NOT_EMPTY:"非空判断"field-strategy: IGNORED#数据库类型db-type: MYSQLconfiguration:# 是否开启自动驼峰命名规则映射:从数据库列名到Java属性驼峰命名的类似映射map-underscore-to-camel-case: true# 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段call-setters-on-nulls: false# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3) 在启动类中映射Mapper

java">@SpringBootApplication(exclude = SecurityAutoConfiguration.class)
@EnableSwagger2
@MapperScan(basePackages = "com.demo.swaggermybatisplus.mapper")
public class SwaggerMybatisPlusApplication {public static void main(String[] args) {SpringApplication.run(SwaggerMybatisPlusApplication.class, args);}
}

java_168">4)创建UserInfo.java对象

java">@Data
@TableName("wechat_user")
public class UserInfo {/*** 主键* @TableId中可以决定主键的类型,不写会采取默认值,默认值可以在yml中配置* AUTO: 数据库ID自增* INPUT: 用户输入ID* ID_WORKER: 全局唯一ID,Long类型的主键* ID_WORKER_STR: 字符串全局唯一ID* UUID: 全局唯一ID,UUID类型的主键* NONE: 该类型为未设置主键类型*/@TableId(type = IdType.AUTO)private Integer id;private String openid;private String nickname;private String avatar;private String email;private String createTime;private String updateTime;
}

java_194">5)创建UserInfoMapper.java

java">@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {}

java_202">6) 创建UserInfoService.java

java">public interface UserInfoService extends IService<UserInfo> {}

java_209">7) 创建UserInfoServiceImpl.java实现类

java">@Service
public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements UserInfoService {}

8) 创建testController 测试

java">@RestController
@Api(tags = "test接口")
public class testController {@Autowiredprivate UserInfoService userInfoService;@GetMapping("list")@ApiOperation("获取所以用户")public Result<List<UserInfo>> list() {List<UserInfo> list = userInfoService.list();return Result.success(list);}
}

9) 启动项目测试

在这里插入图片描述

10) Mybatis的基础用法

要想实现自定义的查询,可以在resource下创建mapper目录,再创建UserInfoMapper.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.swaggermybatisplus.mapper.UserInfoMapper"><select id="getUserInfo" resultType="com.demo.swaggermybatisplus.entity.UserInfo">select * from wechat_userwhere id = #{id}</select>
</mapper>

如果不想写UserInfoMapper.xml文件,也可以直接写UserInfoMapper.java

java">@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {// 下面 @Select("select * from wechat_ai where id = #{id}")// 等价于写在UserInfoMapper.xml中的select@Select("select * from wechat_ai where id = #{id}")UserInfo getUserInfo(Integer id);
}

11) MybatisPlus的用法

testController.java

java">	@GetMapping("/plus")@ApiOperation("获取单个用户")public Result<List<UserInfo>> userInfo(Integer id) {QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();queryWrapper.lambda().eq(UserInfo::getId, 1);List<UserInfo> list = userInfoService.list(queryWrapper);return Result.success(list);}

以上这三中都可以查询MySQL数据,可以选择合适的使用

参考博客

  • SpringBoot整合Mybatis-plus及用法

http://www.ppmy.cn/server/152359.html

相关文章

python:正则表达式

正则表达式&#xff08;Regular Expressions&#xff0c;简称 regex&#xff09;是一种强大的文本处理工具&#xff0c;用于匹配字符串中的字符组合。Python 提供了 re 模块来支持正则表达式的操作。以下是一些常用的正则表达式操作和示例&#xff1a; 导入 re 模块 首先&…

故障诊断 | 一个小创新:特征提取+KAN分类

往期精彩内容&#xff1a; Python-凯斯西储大学&#xff08;CWRU&#xff09;轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…

优先队列【东北大学oj数据结构9-3】C++

优先队列 优先级队列是一种数据结构&#xff0c;其中保存了一组数据 S&#xff0c;其中每个元素都有一个键&#xff0c;并执行以下操作&#xff1a; insert(S, k)&#xff1a;将元素k插入集合S extractMax(S)&#xff1a;从S中取出S中key最大的元素并返回其值 创建一个程序&am…

Vue.js前端框架教程3:Vue setup语法糖和异步操作

文章目录 script setup基本语法使用 Composition API组件定义使用生命周期钩子模板引用使用 defineProps 和 defineEmits组合多个 <script setup> 标签 Vue异步操作1. 使用 async 和 await2. 使用 Promise3. 在 created 或 mounted 钩子中执行异步操作4. 使用 watch 或 w…

24届FPGA秋招经验分享

学员客户&#xff1a;首先自我介绍一下&#xff0c;我本科就读于一所985高校&#xff0c;专业是电子信息工程&#xff0c;硕士阶段则专注于FPGA方向的研究。虽然有着相对扎实的理论基础&#xff0c;但在秋招过程中&#xff0c;我仍然遇到了不少挑战。以下是我结合自己的亲身经历…

单元测试使用记录

什么是单元测试 简单来说就是对一个类中的方法进行测试&#xff0c;对输出的结果检查判断是否符合预期结果 但是在多年的工作中&#xff0c;从来没有哪个项目中真正系统的用到了单元测试&#xff0c;因此对它还是很陌生的&#xff0c;也就造成更加不会在项目中区使用它。 如何…

深入解析 `DataFrame.groupby` 和 `agg` 的用法及使用场景

深入解析 DataFrame.groupby 和 agg 的用法及使用场景 1. groupby 的基本用法语法&#xff1a;示例&#xff1a; 2. agg 的基本用法语法&#xff1a;示例&#xff1a; 3. first、sum、lambda 的用法3.1 first示例&#xff1a; 3.2 sum示例&#xff1a; 3.3 lambda示例&#xff…

apache的常见报错

文章目录 一、httpd -k install -n Apache输入后&#xff0c;提示拒绝访问怎么办解决方案 二、命令行输入&#xff1a;httpd -t 报错解决方案 三、httpd -k install -n Apache输入后&#xff0c;另外一种报错解决方案测试是否成功 四、路径问题引起报错解决方案 一、httpd -k i…