【项目学习01_2024.04.27_Day02】

学习笔记

    • 3 课程查询
      • 3.4 生成接口文档
      • @ApiOperation("课程查询接口") 和@Api注解的区别
      • @Api(value = "课程信息编辑接口",tags = "课程信息编辑接口")其中的value和tags有什么用呢
      • Swaager的常用注解如下:
      • 3.5 开发持久层
        • 3.5.1 生成mapper
        • 3.5.2 测试mapper
      • 这两个依赖的作用主要是为了解决日志相关的问题,并提供更好的日志管理和记录功能:

3 课程查询

3.4 生成接口文档

Swagger是全球最大的OpenAPI规范(OAS)API开发工具框架,Swagger是一个在线接口文档的生成工具,前后端开发人员依据接口文档进行开发。
Swagger

Spring Boot 可以集成Swagger,Swaager根据Controller类中的注解生成接口文档 ,只要添加Swagger的依赖和配置信息即可使用它。

在这里插入图片描述

@ApiOperation(“课程查询接口”) 和@Api注解的区别

@ApiOperation("课程查询接口")@Api 注解是 Swagger(一个用于构建、文档化和调用 Web 服务的工具)中的注解,用于描述和配置接口文档信息。
@Api注解用于标注在 Controller 类上,表示对整个控制器的描述信息,比如接口的名称、描述等。
@ApiOperation(“课程查询接口”)注解用于标注在具体的接口方法上,表示对该接口方法的描述信息,比如接口的功能、参数、返回值等。
因此,@Api 注解用于描述整个控制器,而 @ApiOperation 注解用于描述具体的接口方法。通过这两个注解,可以清晰地了解接口的功能和参数信息,方便开发人员和用户查看和理解接口文档。

@Api(value = “课程信息编辑接口”,tags = “课程信息编辑接口”)其中的value和tags有什么用呢

在 Swagger 中,@Api 注解用于描述整个控制器或接口的信息,其中 valuetags 是两个重要的属性:

  • value: 用于指定接口或控制器的简要描述,通常表示接口或控制器的名称或功能。这个值会显示在 Swagger 文档中,帮助用户快速了解接口或控制器的作用。
  • tags: 用于指定接口或控制器所属的标签,可以将相似功能的接口或控制器归类到同一个标签下。在 Swagger 文档中,标签会以分类的形式展示,方便用户按照标签查看相关接口或控制器。
    通过在 @Api 注解中使用 valuetags 属性,可以使接口文档更加清晰和易于理解,用户可以快速浏览和查找所需的接口信息。这样可以提高接口文档的可读性和用户体验。

Swaager的常用注解如下:

在Java类中添加Swagger的注解即可生成Swagger接口,常用Swagger注解如下:

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiModelProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiImplicitParam:一个请求参数
@ApiImplicitParams:多个请求参数

3.5 开发持久层

3.5.1 生成mapper

本项目使用MyBatis-Plus开发持久层,需要创建PO类、Mapper接口、Mapper的xml文件,每个PO类对应数据库的每张表,每张表需要创建一个Mapper接口和Mapper的xml映射文件 。
下边将使用generator工程生成的mapper接口和mapper映射文件 拷贝到service工程 。
service工程即业务层为api接口工程提供业务处理支撑,本项目业务层包括了持久层的代码,一些大型公司的团队职责划分更细,会将持久层和业务层分为两个工程,不过这需要增加成本。

3.5.2 测试mapper

下边对mapper进行单元测试,测试course_base表的查询接口。
1、下边在service工程的pom.xml中添加依赖

<dependencies><dependency><groupId>com.xuecheng</groupId><artifactId>xuecheng-plus-content-model</artifactId><version>0.0.1-SNAPSHOT</version></dependency><!-- MySQL 驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- mybatis plus的依赖 --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-context</artifactId></dependency><!-- Spring Boot 集成 Junit --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 排除 Spring Boot 依赖的日志包冲突 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><!-- Spring Boot 集成 log4j2 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId></dependency></dependencies>

这两个依赖的作用主要是为了解决日志相关的问题,并提供更好的日志管理和记录功能:

  1. 排除默认日志包依赖的好处:Spring Boot 默认使用 Logback 作为日志框架,但有时候我们可能更喜欢使用其他日志框架,比如 Log4j2。通过排除默认的日志包依赖,我们可以避免引入不需要的日志框架,减少项目中的依赖冲突和混乱。

  2. 集成 Log4j2 的好处:Log4j2 是一个功能强大、配置灵活的日志框架,可以帮助我们更好地记录应用程序的日志信息。通过集成 Log4j2 到 Spring Boot 项目中,我们可以使用 Log4j2 提供的丰富功能,比如灵活的日志级别控制、日志文件分割、日志格式定制等,从而更好地管理和监控应用程序的日志输出。

综合来说,通过这两个依赖的配置,我们可以灵活选择和配置适合项目需求的日志框架,提高日志记录的灵活性和可维护性,同时避免日志包冲突和混乱,让日志管理变得更加方便和有效。
在这里插入图片描述

3、配置扫描mapper及分页插件
分页插件的原理:
首先分页参数放到ThreadLocal中,拦截执行的sql,根据数据库类型添加对应的分页语句重写sql,例如:(select * from table where a) 转换为 (select count(*) from table where a)和(select * from table where a limit ,)
计算出了total总条数、pageNum当前第几页、pageSize每页大小和当前页的数据,是否为首页,是否为尾页,总页数等。

4、单元测试所需要的配置文件
在test/resources下创建 log4j2-dev.xml、bootstrap.yml

5、编写启动类:
单元测试工作在test目录,在test下添加启动类

6、编写测试类


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/4712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从NoSQL到NewSQL——10年代大数据浪潮下的技术革新

引言 在数字化浪潮的推动下&#xff0c;数据库技术已成为支撑数字经济的坚实基石。腾讯云 TVP《技术指针》联合《明说三人行》特别策划的直播系列——【中国数据库前世今生】&#xff0c;我们将通过五期直播&#xff0c;带您穿越五个十年&#xff0c;深入探讨每个时代的数据库演…

8_手眼标定总结_auboi5机械臂与海康平面相机

经过不断地学习与调试&#xff0c;不断地学习网络上其他同志分享的资料&#xff0c;opencv手眼标定迎来了阶段性结束。实际测试结果在机械臂坐标系中X方向差5mm左右。 代码参考《https://blog.csdn.net/wanggao_1990/article/details/81435660》 注意事项&#xff1a; ①标定…

MT3608B 航天民芯代理 1.2Mhz 24V输入 升压转换器

深圳市润泽芯电子有限公司为航天民芯一级代理商 技术支持欢迎试样~Tel&#xff1a;18028786817 简述 MT3608B是恒定频率的6针SOT23电流模式升压转换器&#xff0c;用于小型、低功耗应用。MT3608B开关频率为1.2MHz&#xff0c;允许使用微小、低电平成本电容器和电感器高度不…

http的basic 认证方式

写在前面 本文看下http的basic auth认证方式。 1&#xff1a;什么是basic auth认证 basic auth是一种http协议规范中的一种认证方式&#xff0c;即一种证明你就是你的方式。更进一步的它是一种规范&#xff0c;这种规范是这样子&#xff0c;如果是服务端使用了basic auth认证…

【源码阅读】 Golang中的database/sql库源码探究

Note&#xff1a;文章待完结 文章目录 前言一、整体目录结构二、driver包1、驱动相关driver.Driver2、驱动连接&#xff1a;driver.Conn3、预处理结构&#xff1a;Stmt4、执行结果 driver.Result5、查询结果&#xff1a;driver.Rows6、driver.RowsAffected7、driver.Value8、Va…

IMU识别高尔夫球击球位置

近日&#xff0c;来自欧洲的一支奥地利科研团队联合高校和业界专家&#xff0c;通过在高尔夫球杆上安装IMU传感器&#xff0c;用来实时精准识别球杆与球的接触点位置&#xff0c;以增强高尔夫训练效果。 该团队致力于开发一种移动式解决方案&#xff0c;以替代传统的静态检测技…

python基础知识(17)面向对象 1

一、面向对象的概念 1、面向对象的两个基本概念 编程语言中&#xff0c;一般有两种编程思维&#xff0c;面向过程和面向对象。 面向过程&#xff0c;看重的是解决问题的过程。 这好比我们解决日常生活问题差不多&#xff0c;分析解决问题的步骤&#xff0c;然后一步一步的解决…

MySQL 之 主从复制

1. 主配置文件&#xff08;win下是my.ini&#xff0c;linux下是my.cnf&#xff09; #mysql 服务ID,保证整个集群环境中唯一 server-id1 #mysql binlog 日志的存储路径和文件名 log-bin/var/lib/mysql/mysqlbin #错误日志,默认已经开启 #log-err #mysql的安装目录 #basedir #mys…

E-MapReduce极客挑战赛季军方案

前一段时间我参加了E-MapReduce极客挑战赛&#xff0c;很幸运的获得了季军。在这把我的比赛攻略给大家分享一下&#xff0c;希望可以抛砖引玉。 赛题分析与理解 赛题背景&#xff1a; 大数据时代&#xff0c;上云已成为越来越多终端客户大数据方案的落地选择&#xff0c;阿里…

特别的时钟特别的倒计时

念念不忘的歌曲&#xff1a;Thats Why You Go Away <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title&…

测算sample gpt

测算代码 import pandas as pd import matplotlib.pyplot as pltlosspd.read_pickle("loss_8.pkl") plt.plot(loss) losspd.read_pickle("loss_16.pkl") plt.plot(loss) losspd.read_pickle("loss_4_8.pkl") plt.plot(loss) losspd.read_pickle(…

进程的概念(2)

进程优先级 1.什么的优先级 概念&#xff1a;指定进程获取某种资源&#xff08;CPU&#xff09;的先后顺序 本质&#xff1a;优先级的本质是优先级数字的大小&#xff0c;Linux中优先级数字越小&#xff0c;优先级越高 task_struct 进程控制快-> struct -> 内部字段 -&g…

Modbus转Profinet网关连接打印设备与PLC通讯

Modbus转Profinet网关&#xff08;XD-MDPN100&#xff09;是一种能够实现Modbus协议和Profinet协议之间转换的设备。Modbus转Profinet网关可提供单个或多个RS485接口&#xff0c;使得不同设备之间可以顺利进行通信。当我们需要连接打印设备与PLC进行通讯时&#xff0c;Modbus转…

pycharm 安装“通义灵码“并测试

过程&#xff1a;“File>setting>Plugins” 提示&#xff1a; 翻译之后&#xff1a; 点击"接受"之后&#xff0c;提示一下图片&#xff0c;点击ok 安装完成&#xff1a; 安装完"通义灵码"之后&#xff0c;需要登陆&#xff0c;登陆后测试 参考…

vue实现滚动条联动(一个滚动条控制两个或多个)

两个表格需要进行比对&#xff0c;两个表格是互相独立的&#xff0c;如果滚动条不能同步&#xff0c;用户就要操作两个两次&#xff0c;体验不是太好&#xff0c;如下图&#xff1a; 因此想使两个滚动条同步&#xff0c;思路如下&#xff1a; 给两个表格定义ref&#xff08;便…

uniapp微信小程序开发踩坑日记:由于图表数据渲染不出来,我第一次在项目中用watch函数监听数据变化

一、发现问题 在我们团队自己开发的微信小程序中&#xff0c;引入了Echarts图表库 然后突然有一天&#xff0c;后端队友反应图表渲染有问题。后面我去试了一下&#xff0c;确实20次里面必有一次数据渲染不出来 断定代码没问题&#xff0c;于是我们将其鉴定为玄学 二、问题原因…

VS2022 配置OpenCV开发环境详细教程

OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;由Intel开发并首先发布于1999年。OpenCV被广泛用于实时图像处理、视频分析、物体检测、面部识别、机器人视觉以及许多其他领域。它支持C、Pytho…

代码+视频,R语言绘制生存分析模型的时间依赖(相关)性roc曲线和时间依赖(相关)性cindex曲线

ROC曲线分析是用于评估一个因素预测能力的手段&#xff0c;是可以用于连续型变量分组的方法。在生存分析中&#xff0c;疾病状态和因素取值均会随时间发生变化。而标准的ROC曲线分析将个体的疾病状态和因素取值视作固定值&#xff0c;未将时间因素考虑在分析之中。在这种情况下…

STM32入门_江协科技_1~2_OB记录的自学笔记_STM32简介

1.综述 1.1. 课程简介 手打代码是加入了实操&#xff0c;增加学习效果&#xff1b; STM最小系统板面包板的硬件平台&#xff1b; 配套0.96寸的显示屏&#xff0c;便于调试&#xff1b; 因为使用面板板&#xff0c;所以如果程序现象不出来也有可能是硬件连接的问题&#xff1b; …

Linux 小技巧1

目录 一. 统计文件的总行数二. 获取从第二行开始的内容三. 合并两个文件为一个文件四. 统计指定列唯一值的数量五. 列出文件的绝对路径六. 获取除了空白行和注释之外的部分 一. 统计文件的总行数 ⏹非压缩文件 统计当前文件夹下csv文件的行数 wc -l ./*.csv统计指定文件夹下…