GraphQL -- GraphQL入门,与SpringBoot整合,并用Postman测试接口
什么是GraphQL简介GraphQL是一种用于 API 的查询语言,也是一个基于服务端的运行引擎。GraphQL 提供了一套完整的规范和描述用于查询 API,服务端能够根据客户端的需要自动适配并返回准确的数据。
优势
在目前流行的restful架构下,服务端返回的接口数据大多由后端开发所定义,而不是由前端来提出,比如对于同一个用户信息,有时后端接口返回来的数据中,仅有部分是前端所需要的,这是其他返回的数据便是冗余的。如果为了解决冗余的问题,编写对应返回数据的接口,又会使得接口数量变得庞大臃肿。
而使用GraphQL可以使开发者可以自定义数据模型、查询规范和查询参数,并在一个请求中指定需要返回的数据以准确获取所有想要的数据。
spring boot整合GraphQL下面创建一个简单的spring boot项目整合GraphQL,做简单的演示
创建一个mavan项目
在pom文件中导入GraphQL的依赖, 1234567891011121314151617 <dependencies> <!--graphql-spring-boot--> & ...
记录 -- 个人博客搭建
记录 — 个人博客搭建前言 终于,在2023年12月17日,我的博客终于初步完成了。为了纪念它的问世,特地写这么一篇文章来记录一下。
为什么要搞博客 从大学选择计算机专业的那天,我就满怀憧憬,幻想着学成之后,利用代码破译机密,改变世界。emm...然而好像不是这样,在2023年,大多数人只能当小小码农。但在当时,看到网上那些花里胡哨,特效漫天的网站,我也默默在记事本上写下,有一天我也要写一个自己的博客网站,记录生活也好,写写学习总结也好,发发牢骚也好。
但是,阴差阳错之间,我主打的方向成了后端,写美美的博客这个想法也被我渐渐忘记了。嘿嘿。最近因为一直有在csdn上写一些学习记录,某天翻看到其他大佬从自己的博客上搬运过来的文章,我点击进入他的博客,看他在其中发表自己的作品,述说自己的生活感悟,那种感觉回来了,我记起了那个做个自己的博客的计划。于是这次我没有三分钟热度,开始着手完成这个计划。
怎么做的博客 &nbs ...
Oracle--查出某个特定值在哪些表的哪些字段中出现,并将结果存入新表
引言
在开发中经常出现需要将表的某个字段的值修改,又怕影响其关联表,这时需要对表中的字段值进行评估,由于表的数量很多,于是可以采用SQL语句将某个特定值在所有表中哪个字段出现的位置查出来,进行评估。这篇文章将讲解Oracle数据库如何实现该功能,如果您使用的数据库是MySQL可以查看这篇文章:MySQL—查出某个特定值在哪些表的哪些字段中出现,并将结果存入新表
具体方法
先创建一个表SEARCH_VALUE以保存查出的数据12345678CREATE TABLE OMS_NJ.SEARCH_VALUE ( ID VARCHAR2(100), TABLE_NAME VARCHAR2(100) NULL, COLUMN_NAME VARCHAR2(100) NULL, SEARCH_VAL VARCHAR2(100) NULL, CONSTRAINT SEARCH_VALUE_PK PRIMARY KEY (ID))TABLESPACE USERS;
上述SQL语句中,id为表的主键,table_name为查询到的数据库表名,column_name为表中 ...
Java框架--Spring(事务,@Transactional)的学习笔记
Spring 事务管理什么是事务?
事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。
最经典的事务例子当属银行转账,A转账给B一百块的流程要经过两个操作,将A账户减少100块,B账户增加100块,若此时银行系统发生崩溃,可能发生A账户金额减少而B账户金额不增加,造成错误。故事务就是要保证这样的操作要么同时完成,要么同时失败。事务的四大特性(ACID)
原子性:事务是最小的执行单元,不允许分割,事务中的操作要么全部完成,要么都失败。
一致性:事务执行前后数据库的状态保持一致,多个事务对同一个数据读取的结果是相同的。
隔离性:并发访问数据库时,一个事务的执行不会被另一个事务影响或干扰。
持久性:事务执行完成后,对数据库的改变是持久的。即使数据库发生故障也不会影响。如何保证ACID?
数据库中用==锁== 、==并发与多版本== (非阻塞读)保持==一致性== 和==隔离性== ,用事务的commit,rollback,savepoint保持==原子性== ,用数 ...
MySQL--查出某个特定值在哪些表的哪些字段中出现,并将结果存入新表
引言
在开发中经常出现需要将表的某个字段的值修改,又怕影响其关联表,这时需要对表中的字段值进行评估,由于表的数量很多,于是可以采用SQL语句将某个特定值在所有表中哪个字段出现的位置查出来,进行评估。这篇文章将讲解MySQL数据库如何实现该功能,如果您使用的数据库是Oracle可以查看这篇文章:Oracle—查出某个特定值在哪些表的哪些字段中出现,并将结果存入新表具体方法先创建一个表SEARCH_VALUE以保存查出的数据1234567CREATE TABLE `SEARCH_VALUE` ( table_name varchar(100) DEFAULT NULL, column_name varchar(100) DEFAULT NULL, search_val varchar(100) DEFAULT NULL, id varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, PRIMARY KEY (`id`))
上述SQL语句中,id为表的主键,table_name为查询到的数据库表 ...
Java--项目引入Swagger、knife4j文档,Swagger配置类设置,Swagger注解介绍
引言
在我们项目中,经常需要Swagger生成测试接口文档,方便开发人员对接口进行测试与联调,下面主要讲解如何在项目中启用Swagger与增强的knife4j文档。引入依赖
在项目的pom.xml文件里添加swagger依赖123456789101112<dependencies> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version> </dependency> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifact ...
Java基础--String()创建了几个对象,String字符串==比较
知识补充
在JDK6之前,字符串常量池存放在永久代;在JDK6之后,字符串常量池存放在Java堆内。
字符串常量池中不会存储相同内容的字符串。
==intern()方法==:如果字符串常量池中没有对应的字符串的话,会先在字符串常量池中生成该字符串,然后返回对象的地址,如果存在对应的字符串,则直接返回字符串常量的地址。通过字面量创建字符串12String s1 = "Java";System.out.print(s1.intern()==s1); //true
执行上述语句时,如果字符串常量池中没有“Java”这个字符串,会在字符串常量池中先创建“Java”字符串对象,然后将s1指向该对象的地址;如果字符串常量池中已经存在“Java”字符串对象,则无需创建对象,直接将s1指向字符串常量池中的对象。
s1.intern()也是指向字符串常量池中的对象,所以输出语句输出结果为true。
故上述语句创建0个或者1个对象。通过new关键字创建字符串12String s2 = new String("Python");System.out.print( ...
Java基础--接口和抽象类的区别(接口中的默认,静态,私有方法)的学习笔记
接口与抽象类的区别相同点
接口的实现或抽象类的子类需要实现接口或抽象类中相应的方法才能被实例化。
接口和抽象类不可以被实例化。
不同点
抽象类可以有构造方法,而接口不可以有。
既然抽象类并不能实例化,那抽象类中的构造函数存在的意义是什么?
抽象类必须被子类继承来实现。
子类在调用父类时,无论自己有没有构造方法都会先去执行父类无参的函数,哪怕父类是抽象类。虽然抽象类不能被实例化,但是可以在构造方法中初始化一些参数,也可以在子类中调用父类的构造方法。
抽象类的成员变量可以是常量,也可以是非常量;而接口的变量只能是常量,接口中的变量会被隐式的被public static final来修饰(并且只能用public static final来修饰)。
抽象类的成员方法:既可以有普通方法也可以有抽象方法;而接口在jdk1.7只能包含抽象方法,默认修饰符:public abstract,在jdk1.8可以有默认方法和静态方法,在jdk1.9可以有私有方法。
一个类可以实现多个接口,但只能继承一个类。
声明接口的关键字是interface,实现接口的关键字是implements,与抽象类的关 ...