【持续更新】后端开发规范
1-DTO、Entity、VO
Entity:实体是直接映射到数据库表的Java类。
职责:
数据持久化: 专注于如何将对象状态保存到数据库以及如何从数据库加载。
定义数据模型: 精确地描述数据库表的结构(表名、列名、数据类型、关系、约束等)。
封装核心业务数据: 包含与数据库字段直接对应的属性。
DTO:根据接口需求定制字段,不应有业务逻辑。DTO是一种设计模式,用于在不同层(尤其是客户端与服务器之间)传输数据的对象。它不包含任何业务逻辑,只有数据(字段、getter、setter)。
DTO可以用lombok的@Data注解实现getter、setter等初始化方法。
职责:
数据封装与传输: 在网络间安全、高效地传输数据。
定制返回数据: 根据前端需求,组合、过滤、格式化数据,避免暴露内部实现细节和数据库结构。
减少网络请求次数: 通过组合多个实体的所需字段,一个DTO可以满足一个特定页面的所有数据需求,避免前端多次调用接口。
VO:高度定制,完全匹配前端页面需求,不应有业务逻辑。一般用于在Contro ...
前端后端
未读【持续更新】后端根基
-面向对象
三大特征:封装、继承、多态。
万物皆可归类,一个类与外界的封装关系,一个父类和子类的继承关系,一个类和多个类的多态关系。
封装:对象代表什么,就得封装对应的数据,并提供数据对应的行为。
封装对外隐藏了类的内部实现机制,对外提供访问它的方法,可以在不影响外部使用的情况下改变类内部的结构。说白了就是低耦合,高内聚。使用者通过实现制定好的方法来访问数据,无需关心方法的内部实现。
创建对象时问自己三个问题:要干什么、要用什么东西才能干、干完要不要反馈
继承:复用。子类继承父类的属性和行为,使得子类可以直接具有与父类相同的属性和行为。
子类可以直接访问父类中的非私有的属性和行为。Java通过extends关键字实现继承。Java是单继承的,一个类只能继承一个直接父类,但是可以多级继承。
子类不能继承父类的构造方法。
子类可以继承父类的私有成员(成员变量,方法),只是子类无法直接访问而已。可以通过getter/setter方法访问父类的私有成员变量。子类父类中出现了同名的成员变量时,子类会优先访问自己对象中的成员变量。如果想访问父类成员变量,可以使用 ...
前端后端
未读【持续更新】后端开发常用注解
Swagger
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(https://swagger.io/)。
注解
说明
@Api
用在类上,例如Controller,表示对类的说明
@ApiModel
用在类上,例如entity、DTO、VO
@ApiModelProperty
用在属性上,描述属性信息
@ApiOperation
用在方法上,例如Controller的方法,说明方法的用途、作用
Lombok
Lombok 是 Java 后端开发中一个非常流行且实用的工具库,它通过注解的方式在编译时自动生成代码(如getter,setter,constructor等),极大地减少了冗长的样板代码,让代码更加简洁清晰。
注解
说明
@Data
复合注解,相当于同时添加了getter/setter/tostring/equalsandhash/require注解
@Value
是 @Data 的不可变版本。生成的类所有字段都是 private 和 fi ...
前端后端
未读【持续更新】踩坑记录
1-项目主模块编译报错-250915
【描述】
使用Maven编译项目主模块时出现错误。Maven->项目主模块->生存期->compile
12345678910[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.10.1:compile (default-compile) on project sky-common: Fatal error compiling: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.sun.tools.javac.tree.JCTree qualid' -> [Help 1][ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven wi ...
Mybatis从练气到化神
取自黑马程序员,仅供学习。
前言
在前面我们学习MySQL数据库时,都是利用图形化客户端工具(如:idea、datagrip),来操作数据库的。
在客户端工具中,编写增删改查的SQL语句,发给MySQL数据库管理系统,由数据库管理系统执行SQL语句并返回执行结果。
增删改操作:返回受影响行数
查询操作:返回结果集(查询的结果)
我们做为后端程序开发人员,通常会使用Java程序来完成对数据库的操作。Java程序操作数据库,现在主流的方式是:Mybatis。
什么是MyBatis?
MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。
MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
官网:https://mybatis.org/mybatis-3/zh/index.html
在上面我们提到了两个词:一个是持久层,另一个是框架。
持久层:指的是就是数据访问层(dao),是用来操作数据库的。 ...
Java抽象类、接口和内部类
1.抽象类
1.1 概述
1.1.1 抽象类引入
父类中的方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的方法声明和方法主体,只有声明还有意义,而方法主体则没有存在的意义了(因为子类对象会调用自己重写的方法)。换句话说,父类可能知道子类应该有哪个功能,但是功能具体怎么实现父类是不清楚的(由子类自己决定),父类只需要提供一个没有方法体的定义即可,具体实现交给子类自己去实现。我们把没有方法体的方法称为抽象方法。Java语法规定,包含抽象方法的类就是抽象类。
抽象方法 : 没有方法体的方法。
抽象类:包含抽象方法的类。
1.2 abstract使用格式
abstract是抽象的意思,用于修饰方法方法和类,修饰的方法是抽象方法,修饰的类是抽象类。
1.2.1 抽象方法
使用abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体。
定义格式:
1修饰符 abstract 返回值类型 方法名 (参数列表);
代码举例:
1public abstract void run();
1.2.2 抽象类
如果一个类包 ...
MySQL进阶
取自黑马程序员,仅供学习。
在MySQL基础内容中,我们讲解了:
使用DDL语句来操作数据库以及表结构(数据库设计)
使用DML语句来完成数据库中数据的增、删、改操作(数据库操作)
我们今天还是继续学习数据库操作方面的内容:查询(DQL语句)。
查询操作我们分为两部分学习:
DQL语句-单表操作
DQL语句-多表操作
1. 数据库操作-DQL
1.1 介绍
DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
查询关键字:SELECT
查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使用频次是要远高于增删改操作的。当我们打开某个网站或APP所看到的展示信息,都是通过从数据库中查询得到的,而在这个查询过程中,还会涉及到条件、排序、分页等操作。
1.2 语法
DQL查询语句,语法结构如下:
1234567891011121314SELECT 字段列表FROM 表名列表WHERE 条件列表GROUP BY 分组字段列表HAVING 分组后条件列表ORDER BY 排序字段列表 ...
SpringBootWeb请求响应
取自黑马程序员,仅供学习。
前言
基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。
其实呢,是我们在浏览器发起请求,请求了我们的后端web服务器(也就是内置的Tomcat)。而我们在开发web程序时呢,定义了一个控制器类Controller,请求会被部署在Tomcat中的Controller接收,然后Controller再给浏览器一个响应,响应一个字符串 “Hello World”。 而在请求响应的过程中是遵循HTTP协议的。
但是呢,这里要告诉大家的时,其实在Tomcat这类Web服务器中,是不识别我们自己定义的Controller的。但是我们前面讲到过Tomcat是一个Servlet容器,是支持Serlvet规范的,所以呢,在tomcat中是可以识别 Servlet程序的。 那我们所编写的XxxController 是如何处理请求的,又与Servlet之间有什么联系呢?
其实呢,在SpringBoot进行web程序开发时,它内置了一个核心的Servlet程 ...
MySQL基础
取自黑马程序员,仅供学习。
首先来了解一下什么是数据库。
数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。
像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app,那这些大家所看到的数据,其实都是存储在数据库中的。最终这些数据,只是在浏览器或app中展示出来而已,最终数据的存储和管理都是数据库负责的。
数据是存储在数据库中的,那我们要如何来操作数据库以及数据库中所存放的数据呢?
那这里呢,会涉及到一个软件:数据库管理系统(DataBase Management System,简称DBMS)
DBMS是操作和管理数据库的大型软件。将来我们只需要操作这个软件,就可以通过这个软件来操纵和管理数据库了。
此时又出现一个问题:DBMS这个软件怎么知道要操作的是哪个数据库、哪个数据呢?是对数据做修改还是查询呢?
需要给DBMS软件发送一条指令,告诉这个软件我们要执行的是什么样的操作,要对哪个数据进行操作。而这个指令就是SQL语句
SQL(Structured Query Langu ...
HTTP响应行-常见响应状态码
一、状态码大类
状态码分类
说明
1xx
响应中——临时状态码,表示请求已经接受,告诉客户端应该继续请求或者如果它已经完成则忽略它
2xx
成功——表示请求已经被成功接收,处理已完成
3xx
重定向——重定向到其它地方:它让客户端再发起一个请求以完成整个处理。
4xx
客户端错误——处理发生错误,责任在客户端,如:客户端的请求一个不存在的资源,客户端未被授权,禁止访问等
5xx
服务器端错误——处理发生错误,责任在服务端,如:服务端抛出异常,路由出错,HTTP版本不支持等
二、常见的响应状态码
状态码
英文描述
解释
==200==
OK
客户端请求成功,即处理成功,这是我们最想看到的状态码
302
Found
指示所请求的资源已移动到由Location响应头给定的 URL,浏览器会自动重新访问到这个页面
304
Not Modified
告诉客户端,你请求的资源至上次取得后,服务端并未更改,你直接用你本地缓存吧。隐式重定向
400
Bad Request
客户端请求有语法错误,不能被服务器所 ...