实训项目中用到的一些知识点(部分来自文心一言)

一、使用的注解及其功能

  1. @Configuration:用于定义配置类,该类可以包含@Bean注解的方法,这些方法将被Spring容器在启动时自动调用,用于声明bean

  2. @EnableSwagger2启用Swagger 2.x,一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。

  3. @Bean声明一个bean,由Spring IoC容器管理。通常用在配置类中,表示该方法将返回一个对象,该对象要注册为Spring应用上下文中的bean。(即@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。产生这个Bean对象的方法Spring只会调用一次,随后这个Spring将会将这个Bean对象放在自己的IOC容器中;)

  4. @RestController:是@Controller@ResponseBody的组合注解,用于创建RESTful web服务。它确保所有处理方法都默认通过@ResponseBody注解处理,即方法的返回值都会作为HTTP响应正文返回

  5. @RequestMapping用于将HTTP请求映射到特定的处理器类或处理器方法上。可以定义在类或方法上,提供路由信息。(根据增删改查,也有不同的定义方法,GetMapping查、PostMapping增、DeleteMapping删、PutMapping改)

  6. @Autowired自动装配Spring容器中管理的bean到被注解的字段上。可以用在字段、setter方法或构造器上,实现依赖注入。

  7. @ApiOperation:Swagger注解,用于给API增加操作(通常是HTTP方法)的额外信息,如操作描述、响应类型等。

  8. @Mapper:MyBatis注解,用于标记接口为Mapper接口,MyBatis会自动扫描这些接口并创建其实现类,用于操作数据库

  9. @Repository用于标注数据访问组件,即DAO组件,主要目的是进行数据的持久化操作。Spring会自动检测这些类,并在需要时创建代理实现,实现异常转换等功能。

  10. @Param可认为是用于传参。用在方法参数上,当使用@RequestMapping注解的方法需要多个参数时,可以将请求参数绑定到指定的方法参数上。通常与@RequestMapping一起使用在Spring MVC中。

  11. @Service:用于标注业务层组件,主要目的是进行业务逻辑处理。Spring同样会自动检测这些类,并在需要时创建代理实现,但主要关注于业务逻辑层面。

  12. @Override:表示该方法重写了父类中的方法。编译器会检查该方法是否确实重写了父类中的方法,确保重写的正确性。

  13. @Transactional:声明式事务管理注解,用于指定某个方法或类中的所有方法都运行在事务环境中。可以指定事务的传播行为、隔离级别等属性。(这个过程大致就是:如果方法执行成功,则事务会被提交,所做的更改将永久保存到数据库中。然而,如果在方法执行过程中发生了异常(通常是运行时异常),并且这个异常没有被捕获或处理(或者特别指定了某些异常不应该触发回滚),则事务会被回滚,即所做的更改将被撤销,数据库将恢复到事务开始之前的状态。)

二、配置文件注释

spring.application.name=××#Java数据库连接(jdbc)# 设置连接MySQL数据库所使用的JDBC驱动类
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver  # 数据库连接的URL,包括数据库地址(localhost)、端口(3306)、数据库名(wuzi)以及连接参数(如字符集、SSL使用、时区等)
spring.datasource.url=jdbc:mysql://localhost:3306/wuzi?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC  # 连接数据库时使用的用户名
spring.datasource.username=root  # 连接数据库时使用的密码
spring.datasource.password=123456## 设置Spring MVC的路径匹配策略为Ant风格的路径匹配器
## Ant风格的路径匹配器支持通配符(如?表示任意单个字符,*表示任意数量的字符)来匹配URL路径
spring.mvc.pathmatch.matching-strategy=ant_path_matcherspring
datasource:
driver-class-name:×××
url:×××
username:×××
password:×××
mvc:
pathmatch:
matching-strategy:ant_path_matcher# 设置MyBatis的mapper文件位置,这些XML文件包含SQL语句和映射信息
# classpath: 表示从类路径下查找,mappers/ 是资源文件夹路径,*.xml 表示匹配该文件夹下所有XML文件
mybatis.mapper-locations=classpath:mappers/*.xml  # 设置MyBatis的类型别名包,MyBatis会自动扫描这个包下的类,并为其设置别名(默认为类名的首字母小写,除非在别名注解中指定了其他名称)
# 这有助于在XML映射文件中使用简短的别名来引用Java类型
mybatis.type-aliases-package=com.example.××.mybatis.entityserver.port=8080

三、SQL中使用到的

1、COALESCE:用于从一组参数中返回第一个非NULL值

2、select 1:子查询中的 “1” 被用作占位符。“1” 的实际值并不重要,它可以是任何常量值,甚至是列名,写成 “1” 是为了方便。具体的分析可以看这篇博客:

SQL中的select 1到底是什么意思?_select 1的作用-CSDN博客

3、LEFT JOIN:从左表 那里返回所有的行,即使右表为空也可以。具体的看下面:

SQL LEFT JOIN 关键字 (w3school.com.cn)

4、#{}的作用是什么(答案来自文心一言)

#{} 通常用于表示参数占位符。这些占位符在查询执行之前会被实际的参数值所替换。这种机制有助于防止SQL注入攻击,因为框架会负责适当地转义或处理这些参数值,以确保它们被安全地嵌入到SQL语句中。

5、使用的一条sql语句解释:(来自文心一言)

        update wuziset wznums = wznums + COALESCE((select sum(ruku.rknums)from rukuwhere ruku.wzname = wuzi.wzname), 0)where exists(select 1from rukuwhere ruku.wzname = wuzi.wzname)and wuzi.wzname = #{wuzi.wzname};

这条SQL语句是一个UPDATE语句,用于更新wuzi表中的wznums字段。具体来说,它根据与ruku表的相关联数据来增加wuzi表中某个特定wzname对应的wznums值。下面是对这条语句的详细解释:

  1. 目标表UPDATE wuzi 表明这条语句将更新wuzi表中的数据。

  2. 设置新值set wznums = wznums + COALESCE(..., 0) 这部分指定了wznums字段的新值。这里使用了COALESCE函数来确保如果子查询(select sum(ruku.rknums) ...)返回NULL(即没有找到匹配的wzname),则使用0作为默认值。这样,如果ruku表中没有与wuzi表中某个wzname相匹配的记录,wznums将不会增加。

  3. 子查询COALESCE函数中的子查询是select sum(ruku.rknums) from ruku where ruku.wzname = wuzi.wzname。这个子查询计算ruku表中所有与wuzi表中当前正在更新的wzname相匹配的记录的rknums字段的总和。

  4. 存在性检查WHERE EXISTS (...)子句是一个存在性检查,用于确保只有在ruku表中存在至少一条与wuzi表中当前wzname相匹配的记录时,才执行更新操作。然而,这个存在性检查实际上是多余的,因为COALESCE已经处理了子查询返回NULL的情况。但如果更新逻辑中有其他依赖于存在性的逻辑(尽管在这个特定语句中没有),这个检查仍然是有用的。

  5. 更新条件and wuzi.wzname = #{wuzi.wzname} 是更新操作的条件之一,它指定了只有当wuzi表中的wzname字段等于某个特定的值时(这个值通过#{wuzi.wzname}占位符提供,通常是在执行这条SQL语句时由外部参数提供的),才会执行更新操作。

综上所述,这条SQL语句的目的是更新wuzi表中某个特定wzname对应的wznums字段,将其增加ruku表中所有具有相同wzname的记录的rknums字段的总和(如果ruku表中没有匹配的记录,则不增加)。然而,由于EXISTS子句的存在性检查是多余的(在这个特定情况下),它可能只是代码中的遗留部分或用于其他潜在的逻辑目的。

请注意,#{wuzi.wzname}是参数化查询的一部分,通常在使用某些数据库访问框架(如MyBatis)时使用,它表示在执行查询之前将由外部提供的参数值替换该占位符。在纯SQL环境中,你需要直接提供具体的值或使用其他形式的参数化查询(取决于你的数据库和编程环境)。

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

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

相关文章

74. 搜索二维矩阵【二分法】【C++】

题目描述 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则&…

CTF入门知识点

CTF知识点 md5函数 <?php$a 123;echo md5($a,true); ?> 括号中true显示输出二进制 替换成false显示输出十六进制绕过 ffifdyop 这个字符串被 md5 哈希了之后会变成 276f722736c95d99e921722cf9ed621c&#xff0c;这个字符串前几位刚好是 or 6 而 Mysql 刚好又会把 …

【向量数据库|一文全面了解向量数据库的基本概念、原理、算法、选型】

文末有福利&#xff01; 向量数据库的原理和实现&#xff0c;包括向量数据库的基本概念、相似性搜索算法、相似性测量算法、过滤算法和向量数据库的选型等等。向量数据库是崭新的领域&#xff0c;目前大部分向量数据库公司的估值乘着 AI 和 GPT 的东风从而飞速的增长&#xff…

C++ 智能指针使用不当导致内存泄漏问题

shared_ptr相互嵌套导致循环引用 代码示例 #include <iostream> #include <memory> using namespace std;class B;class A { public:std::shared_ptr<B> b_ptr;~A() { std::cout << "A destroyed\n"; } };class B { public:std::shared_pt…

【代码随想录——图论——岛屿问题】

1.岛屿数量 https://kamacoder.com/problempage.php?pid1171 1.1 深度优先搜索 package mainimport "fmt"var direction [][]int{{0, 1}, {0, -1}, {1, 0}, {-1, 0}}func main() {var M, N intfmt.Scanln(&N, &M)sea : make([][]int, N)visited : make…

LabVIEW图像分段线性映射

介绍了如何使用LabVIEW对图像进行分段线性映射处理&#xff0c;通过对特定灰度值区间进行不同的线性映射调整&#xff0c;以优化图像的显示效果。案例中详细展示了如何配置和使用LabVIEW中的图像处理工具&#xff0c;包括设置分段区间、计算映射参数和应用映射函数等步骤。 实…

【论文阅读】VASA-1: Lifelike Audio-Driven Talking FacesGenerated in Real Time

整体框架。不直接生成视频帧&#xff0c;而是在潜在空间中生成整体面部动态和头部运动&#xff0c;条件是音频和其他信号。给定这些运动潜在编码&#xff0c;通过面部解码器生成视频帧&#xff0c;还接受从输入图像中提取的外观和身份特征作为输入。 构建了一个面部潜在空间并…

Mac系统清理工具:您的数字生活杂务处理师

有没有觉得您的Mac有时候像是需要一个好的春季大扫除一样&#xff1f;随着我们不断使用电脑&#xff0c;各种不需要的文件、老旧的数据和忘记的安装包就像家里的灰尘一样慢慢积累。幸运的是&#xff0c;有了一些出色的Mac系统清理工具&#xff0c;我们可以轻松将这些数字灰尘拂…

Wireshark网络抓包工具入门指南

目录 引言 安装抓包工具 抓包基础概念 抓包步骤 流程 抓包工具头的分析 14.3 以太网的完整帧格式 粘包与拆包现象解析及解决方案 发生原因 解决方案 14.3.1以太网头 14.3.2 IP头 14.3.3 UDP头 14.3.4 TCP头 引言 Wireshark是一款功能强大的开源网络协议分析器&am…

RAG :vector embeddings 怎么关联使用

构建检索增强生成&#xff08;RAG&#xff09;系统的关键因素之一&#xff1a;向量嵌入( vector embeddings )。这些元素是基本的技术和转换工具&#xff0c;使 RAG 系统在某些方面能够以类似于人类理解的形式处理语言。 embedding 提供了一种将文本信息转换为数字数据的方法。…

MFC常见问题解决

文章目录 1. 单文档程序初始化显示设置问题解决方案 1. 单文档程序初始化显示设置 问题 在Microsoft Foundation Classes (MFC) 中&#xff0c;单文档应用程序&#xff08;SDI&#xff09;的初始化时默认并不设置为最大显示。但你可以通过编程方式在程序启动时将其设置为全屏…

微信小程序的校园点餐系统-计算机毕业设计源码56979

摘 要 近年来&#xff0c;随着移动互联网的迅猛发展&#xff0c;微信小程序作为一种轻量级应用形式逐渐受到人们的关注和喜爱。在此背景下&#xff0c;各行各业开始向微信小程序上线他们的服务&#xff0c;其中包括餐饮行业&#xff0c;在校园内&#xff0c;学生、教职工和访客…

Arthas实战(5)- 项目性能调优

1、接口耗时查询&#xff1a;trace命令 trace 命令能主动搜索 class-pattern&#xff0f;method-pattern 对应的方法调用路径&#xff0c;渲染和统计整个调用链路上的所有性能开销和追踪调用链路。 1.1 准备测试应用 新建一个 SpringBoot 应用&#xff0c;写一耗时久的代码&…

能否免费使用Adobe XD?

Adobe XD不是免费的。Adobe 目前XD采用订阅模式&#xff0c;提供订阅模式 7 每天试用期结束后需要付费购买&#xff0c;具体价格根据不同的订阅计划确定&#xff0c;包括每月购买&#xff0c;包括 9.99 美元或每月 99.99 美元&#xff0c;或者选择购买Adobe CreativeCloud整体订…

内核错误定位

内核打印出如下&#xff1a; 在代码目录输入&#xff1a; ./prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gdb kernel/vmlinux 进入gdb 命令模式 输入 l *(rk628_csi_probe0xf0) 能定位到出现问题地方。 最后就…

android iconfont带图标的图文并茂的一种实现

android实现图文并茂方法很多。 这里针对&#xff0c;仅本地图标&#xff0c;需要对齐&#xff0c;任意位置&#xff0c;兼容换行导致后面空白的问题做的一种方案。 www.iconfont.cn&#xff0c;注册&#xff1b; 上传svg的icon&#xff1b; 下载项目得到iconfont.ttf&#xf…

AI绘画Stable Diffusion【图生图教程】:图片高清修复的三种方案详解,你一定能用上!(附资料)

大家好&#xff0c;我是画画的小强 今天给大家分享一下用AI绘画Stable Diffusion 进行 高清修复&#xff08;Hi-Res Fix&#xff09;&#xff0c;这是用于提升图像分辨率和细节的技术。在生成图像时&#xff0c;初始的低分辨率图像会通过放大算法和细节增强技术被转换为高分辨…

以某头部基金实践为例,验证深信服超融合对TA系统承载能力

TA&#xff08;Transfer Agent&#xff09;开放式基金登记过户系统是交易管理系统的重要组成部分&#xff0c;是登记注册机构向投资者提供账户管理、份额登记、交易清算、红利发放、持有人名册保管的综合服务系统。 作为开放式基金运作的核心系统之一&#xff0c;承担着投资者…

计算机视觉——opencv快速入门(二) 图像的基本操作

前言 上一篇文章中我们介绍了如何配置opencv&#xff0c;而在这篇文章我们主要介绍的是如何使用opencv来是实现一些常见的图像操作。 图像的读取&#xff0c;显示与存储 读取图像文件 在opencv中我们利用imread函数来读取图像文件,函数语法如下&#xff1a; imagecv2.imre…

深度调峰汽轮机相关技术资料 厂家培训用

网盘 https://pan.baidu.com/s/16KfuoVko5xCUk3bDOfTlvQ?pwdezjb 亚临界循环流化床机组深度调峰下的输出功率预测方法.pdf 基于时间序列分析的燃煤电厂深度调峰预测方法及装置】.pdf 基于汽轮机低压缸排汽压力调节的深度调峰方法.pdf 基于深度调峰工况下阀门阀杆的振动预测方…