自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 Spring框架常用注解

/ 其他属性和方法:用于标识 Spring MVC 中的控制器组件。控制器通常负责接收来自前端的请求,处理业务逻辑,并返回相应的视图或数据给前端。被 @Controller 注解的类可以定义请求映射和处理方法@Service:用于标识业务逻辑服务组件。服务层通常处理复杂的业务逻辑,并可能与数据访问层(如DAO层)进行交互。@Service 注解的类通常包含业务逻辑的实现:用于标识数据访问层组件,通常用于封装对数据库的访问。

2024-04-01 09:39:17 658

原创 MyBatis 学习(七)之 缓存

MyBatis 缓存是 MyBatis 中的一个重要特性,用于提高数据库查询的性能。MyBatis 提供了一级缓存和二级缓存两种类型的缓存机制。一级缓存:一级缓存(本地缓存)是 MyBatis 中默认的缓存机制,它是SqlSession级别的缓存。当 SqlSession 执行一次查询时,查询到的结果集会存储在 SqlSession 的缓存中。当 SqlSession 再次执行相同的查询时,它会首先从缓存中获取结果,而不会再次查询数据库。一级缓存是基于事务的。

2024-03-02 16:27:20 1269

原创 MyBatis 学习(六)之动态 SQL

动态 SQL 是 MyBatis 强大特性之一,极大的简化我们拼装 SQL 的操作。MyBatis 的动态 SQL 是基于 OGNL 的( Object Graph Navigation Language ,对象图导航语言),它是一种强大的表达式语言,通过它可以非常方便的来操作对象属性, 类似于 EL,SpEL 等的表达式。if 标签用于条件判断,根据条件是否满足来决定是否包含某个元素。where 标签用于生成 WHERE 子句,并会自动去掉(忽略)第一个条件的 and 或 or 关键字,避免语法错误。

2024-03-02 11:20:19 1012

原创 MyBatis 学习(五)之 高级映射

在之前的 SQL 映射文件中提及了 resultMap 元素的和标签,这两个标签是用来的,它们的属性几乎一致,以下是对它们属性的描述,红色标注的是常用属性。

2024-03-01 23:09:08 753

原创 MyBatis 学习(四)之 SQL 映射文件

映射器是 MyBatis 中最复杂并且是最重要的组件。它由一个接口和 SQL 映射文件(或者注解)组成。在映射器中我们可以配置各类 SQL、动态 SQL、缓存、存储过程、级联等复杂的内容。以下是 SQL 映射文件的部分元素介绍元素描述cache该命名空间的缓存配置cache-ref引用其它命名空间的缓存配置resultMap描述如何从数据库结果集中加载对象,它是最复杂也是最强大的元素sql可被其它语句引用的可重用语句块select映射查询语句insert映射插入语句update映射更新语句。

2024-03-01 17:14:22 1060

原创 MyBatis 学习(三)之 MyBatis 全局配置文件

MyBatais 全局配置文件所有配置项如下所示,配置项只能按照如下顺序进行设置。

2024-02-29 12:59:40 758

原创 MyBatis 学习(二)之 第一个 MyBatis 案例

目录1 配置 MyBatis 方式1.1 XML 配置文件1.2 Java 注解配置1.3. Java API 配置2 在 MySQL 中创建一张表3 创建一个基于 Maven 的 JavaWeb 工程4 编写 User 实体类5 创建Mybatis全局配置文件6 编写一个 DAO 或 Mapper 接口7 编写 SQL 映射配置文件(重要)8 加载映射文件9 导入日志文件10 创建 MyBatisTest 测试类 最常见的方式是使用 XML 配置文件来配置 MyBatis。在 XML 配置文

2024-02-28 23:24:45 703

原创 MyBatis 学习(一)之 MyBatis 概述

MyBatis 是一个半自动化的 ORM (Object-Relational Mapping,对象关系映射)持久层框架,它允许开发者通过 XML 或注解将对象与数据库中的记录建立映射关系,同时提供了灵活的 SQL 编写和参数设置功能。JDBC 代码简化:MyBatis 能根据不同的条件动态生成 SQL 语句,使用它可以避免编写大量的 JDBC 代码,如手动设置参数和检索结果集。MyBatis 通过配置和映射机制自动处理这些底层细节,从而简化了数据库操作的代码量参数传递。

2024-02-28 16:29:28 954

原创 SpringMVC 学习(十一)之数据校验

在实际的项目中,一般会有两种校验数据的方式:客户端校验和服务端校验客户端校验:这种校验一般是在前端页面使用 JS 代码进行校验,主要是验证输入数据的合法性,不合法的数据则没有必要再发送至服务端了。前端校验可以有效的提高用户体验,但是无法确保数据完整性,因为前端用户可以方便的拿到请求地址,然后直接发送请求,传递非法参数服务端校验:可以有效的保证数据安全与完整性,但是用户体验要差一点,所以客户端校验和服务端校验通常两者结合使用。

2024-02-28 10:52:55 1466

原创 SpringMVC 学习(十)之异常处理

在 SpringMVC中,异常处理器(Exception Handler)用于处理应用程序中发生的异常。SpringMVC 提供的异常处理主要有以下三种方式:使用 SpringMVC 提供的简单异常处理器 SimpleMappingExceptionResolver实现异常处理接口 HandlerExceptionResolver使用 @ExceptionHandler 注解实现异常处理。

2024-02-27 23:15:11 838

原创 SpringMVC 学习(九)之拦截器

1 拦截器介绍在 SpringMVC 中,拦截器 (Interceptor) 是一种用于拦截 HTTP 请求并在请求处理之前或之后执行自定义逻辑的组件。:在请求处理之前进行用户身份验证和授权:记录请求的相关信息,如请求路径、参数、处理时间等:捕获并处理请求处理过程中抛出的异常:统计请求的响应时间、吞吐量等性能指标:在请求处理之前或之后对请求或响应的数据进行转换或修改:在请求处理之前检查缓存,决定是否从缓存中获取数据从以上功能可以看出,拦截器和过滤器作用很相似,但它们存在一些区别。

2024-02-27 21:06:09 795

原创 SpringMVC 学习(八)之文件上传与下载

传统 Servlet 文件下载方式,需要在 HttpServletResponse response 中设置各种信息,而使用 SpringMVC 的 ResponseEntity 只需要将文件二进制主体、头信息以及状态码设置好即可进行文件下载,在易用性和简洁上更胜一筹。MultipartFile 封装了请求数据中的文件,此时这个文件存储在内存中或临时的磁盘文件中,需要将其转存到一个合适的位置,因为请求结束后临时存储将被清空。,这种编码方式会把文件域指定文件的内容也封装到请求参数中,不会对字符编码。

2024-02-27 11:08:36 1178

原创 SpringMVC 学习(七)之报文信息转换器 HttpMessageConverter

HttpMessageConverter 报文信息转换器,将请求报文(如JSON、XML、HTML等)转换为 Java 对象,或将 Java 对象转换为响应报文。HttpMessageConverter 接口定义了将 Java 对象转换为 HTTP 响应的报文信息和将 HTTP 请求中的报文信息转换为 Java 对象的方法。SpringMVC 提供了多个内置的 HttpMessageConverter 实现,以支持不同的数据格式和数据类型。

2024-02-26 18:57:19 1014

原创 SpringMVC 学习(六)之视图

在 SpringMVC 框架中,视图可以是一个 JSP 页面、HTML 文件、模板文件(如 Thymeleaf、FreeMarker 等)、JSON 响应、XML 响应或其他类型的内容。SpringMVC 中的视图负责渲染数据和将模型 Model 中的数据展示给用户。SpringMVC 提供了多种视图类型,包括 JSP 视图、Thymeleaf 视图、FreeMarker 视图、XSLT 视图等。

2024-02-25 22:58:30 926

原创 SpringMVC 学习(五)之域对象

众所周知,JavaWeb 有四大域,分别是 Page 域 (PageContext)、Request 域、Session 域、Application 域 (ServletContext)。域对象都是 Map 对象,用于在同一范围内的不同组件之间传递和共享数据。这些域对象使得数据能够在不同的请求处理过程中被访问和修改,从而支持多种 Web 应用的数据交互需求。// 存储数据// 获取数据// 删除数据。

2024-02-25 17:12:37 1009

原创 SpringMVC 学习(四)之获取请求参数

1 通过 HttpServletRequest 获取请求参数2 通过控制器方法的形参获取请求参数3通过 POJO 获取请求参数(重点)

2024-02-25 12:48:24 1622

原创 SpringMVC 学习(三)之 @RequestMapping 注解

SpringMVC 之 @RequestMapping 注解

2024-02-24 23:17:23 1320

原创 SpringMVC 学习(二)之第一个 SpringMVC 案例

一个 SpringMVC 简单案例

2024-02-23 21:24:54 1151

原创 SpringMVC 学习(一)之 SpringMVC 介绍

SpringMVC 简介

2024-02-23 21:24:16 1484

原创 Tomcat 学习之 Filter 过滤器

在 Tomcat 中,Filter 是一种用于拦截请求和响应的组件,可以在请求到达 Servlet 之前或响应离开 Servlet 之后对其进行处理。权限控制:可以使用 Filter 来检查请求的用户是否具有访问特定资源的权限日志记录:可以使用 Filter 来记录请求和响应的信息,以便进行监控和故障排除性能监控:可以使用 Filter 来测量请求的处理时间和响应时间,以便进行性能优化数据加密和解密:可以使用 Filter 来对请求和响应进行加密和解密,以保护敏感信息的安全。

2024-02-22 13:14:16 1493

原创 Tomcat 学习之 Servlet

互联网兴起之初,当时的 Sun 公司(后来被 Oracle 收购)已然看到了这次机遇,为了使 Java 进军 Web 编程领域,推出了 Applet 支持 Web 应用,但是效果并不如预想的那般美好,Applet 并没有给业界带来多大影响。之后,Sun 公司的大佬潜心专研,推出了 Servlet(Server Applet,全称 Java Servlet)实现动态网页。Tomcat 的前身为 Catalina,Catalina 是一个轻量级的 Servlet 容器,提供了运行 Servlet 的环境和服务。

2024-02-21 20:31:40 1311

原创 IDEA 2023.2 配置 JavaWeb 工程

在 IDEA 中创建 JavaWeb 工程

2024-02-20 23:14:38 982

原创 MySQL 基础知识(十)之 MySQL 架构

当 MySQL 接收到一个查询请求时,它首先会检查查询缓存中是否已经存在与该查询请求相同的查询结果。如果查询缓存中没有该查询结果,MySQL 会执行查询语句并将结果存储在查询缓存中,以便下次相同的查询可以直接从缓存中获取结果。我们一般不会使用查询缓存,因为一旦查询涉及的表发生改变,该缓存会失效,会被查询缓存清除。MySQL 执行器是 MySQL 服务器中的一个组件,它负责执行优化器生成的执行计划,并返回查询结果。,检查“解析树”中的元素是否在数据库中有对应的实体,并验证操作的合法性。《高性能MySQL》

2024-02-19 22:33:31 2898 2

原创 MySQL 基础知识(九)之视图

视图是一张并不存储数据的虚拟表,其本质是根据 SQL 语句动态查询数据库中的数据。数据库中只存放了视图的定义,通过 SQL 语句使用视图时,会根据视图的定义进行查询。简化代码:对于复杂的查询,通过视图可以不用写那么多代码增加数据的安全性:通过视图,用户只能对指定的数据进行操作查询性能不好:在很多场景下,对视图的查询无法使用基表(基表是创建视图时使用的表)的索引,需要对所有基表进行全表扫描后,将返回结果保存到临时表,再进行查询维护代价高:基表发生变化时,视图也要进行更改,这需要一定的维护成本。

2024-02-17 21:07:42 1317

原创 MySQL 基础知识(八)之用户权限管理

先从 user 表中的 Host、User、Password (MySQL 8.0 版本没有 Password,有 authentication_string)这 3 个字段中判断连接的 IP、用户名、密码是否存在,存在则通过验证。通过连接权限验证后,进行权限分配,按照 user、db、tables_priv、columns_priv 的顺序进行验证。设置相同的用户名,不同的访问地址(主机名),这样我们可以在不同的主机(网络地址)上登录账户连接数据。注意回收权限是回收已经授予的权限,不能回收没有的权限。

2024-02-16 16:27:29 1887

转载 MySQL 基础知识(七)之事务

MySql事务及原理详解【数据库】快速理解脏读、不可重复读、幻读。

2024-02-15 23:01:24 43

原创 MySQL 基础知识(六)之数据查询(二)

注:MySQL 8.0 版本提供了 hash join 连接算法,其他版本仍是 nested loop join 连接算法,尽量少用 join,不同时连接三张表。对外层循环的结果集进行分块,减少内层循环的次数,时间复杂度 O(n / m * n) ,其中 m 为分片数。上述代码中,表 goods 有 7 行数据,sales 有 4 行数据,通过 cross join 连接的后的表 有 7 * 4 行数据。用小结果集驱动大结果集,将筛选结果小的表首先连接,再去连接结果集比较大的表,即用小的表的取连接大的表。

2024-02-15 16:38:13 1679

原创 MySQL 基础知识(六)之数据查询(一)

的方式虽然看起来便捷,但实际上需要转换成全列名,效率低,可读性差。通过 as 可以对列名取别名,as 可以省略(列名和别名之间用空格隔开)周 (01-53) ,星期一是一周的第一天,与 %x 使用。通过 distinct 将查询结果的中的重复行去除。可以对列中的数据进行加 +、减 -、乘 *、除 /时间,12-小时(hh:mm:ss AM 或 PM)asc 表示升序,desc 表示降序,默认是升序。时间, 24-小时 (hh:mm:ss)月的天,数值(0-31)月,数值(00-12)

2024-02-14 18:55:59 1116

原创 MySQL 基础知识(五)之数据增删改

当要插入的数据为日期/时间类型时,如果插入数据的格式不为“%Y-%m-%d”,需要通过 str_to_date(str,fmt);delete 是 DML 语句,不会自动提交,即可以回滚,drop/truncate 都是 DDL 语句,执行后会自动提交,即不能回滚。通过 delete 进行删除,如果不加 where 条件则删除整张表的数据,但是只是删除数据,表依然存在。truncate 和 delete 只删除数据,不删除表结构, drop 则删除整个表(结构和数据)通过 update 更新数据,

2024-02-13 20:17:37 611 2

原创 MySQL 基础知识(四)之表操作

ENGINE 为存储引擎,AUTO_INCREMENT 为下一条插入数据的主键值,一般是最后一条数据的主键值 + 1,DEFAULT CHARSET 为默认字符集编码格式。改变列名,alter table 表名 change 旧列名 新列名 数据类型 约束。name 列设置为 unique not null,则该列名字不能重复,也不能为 NULL。修改表中列,alter table 表名 modify 列名 数据类型 [约束];sex 列设置为 default,只有不插入该列,才会填入默认值。

2024-02-13 17:03:19 779

原创 MySQL 基础知识(三)之数据库操作

重启数据库后,字符集变为之前的编码。不过,我的MySQL因为无法插入中文的问题改了MySQL的配置文件 : my.ini。改完后可以插入中文,但只能在命令行插入,无法通过 source 命令 通过导入 sql 文件插入中文。修改数据库 test 的字符集为 utf8mb4(用于大于4个字节字符,可用来存表情),创建 test 数据库,使用 show databases 查看。utf8 是 utf8mb3 的别名。使用 test 数据库。

2024-02-13 11:23:05 638

原创 MySQL 基础知识(二)之数据类型

二进制数,m 的范围从 1 ~ 64,存储数值范围从0~2^m-1。为精度(precision),表示该值的总长度,范围为1〜65。),表示小数点后面的长度,范围是0~30,且 D

2024-02-12 23:18:35 419

原创 MySQL 基础知识(一)之数据库和 SQL 概述

RDBMS 通常使用客户端/服务端这样的系统架构,通过客户端向服务器端发送 SQL 语句来实现数据库的读写操作,关系数据库采用被称为数据库表的二维表来管理数据,数据库表由表示数据项目的列(字段)和表示一条数据的行(记录)所组成,以记录为单位进行数据读写。用来确认或者取消对数据库的数据进行的变更。此外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。用来创建或者删除存储数据用的数据库以及数据库中的表等对象。SQL 是用来操作关系数据库的语言。

2024-02-12 21:04:14 1015

原创 Spring 用法学习总结(四)之 JdbcTemplate 连接数据库

Dao 是数据库操作,其中 BookDao 为接口并且声明了对数据库操作的方法,BookDaoIml 类实现了 BookDao 接口。BookDaoIml 类定义了 CRUD 方法,通过 JdbcTemplate 模块可以对数据库中的一条或多条数据进行操作。如果仍报错则将 com.mysql.jdbc.Driver 改为 com.mysql.cj.jdbc.Driver。Test 类进行测试,通过 Service 类调用 BookDao 接口中的方法。无法插入中文,请修改数据库编码为 utf-8。

2024-02-12 20:17:49 758

原创 Spring 用法学习总结(三)之 AOP

bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean,其中在实例化和初始化前后都使用后置处理器方法,而InstantiationAwareBeanPostProcessor 继承了BeanPostProcessor。切面代码可以利用这些点插入到应用的正常流程之中,并添加新的行为。切面是通知和切点的结合。通知和切点共同定义了切面的全部内容——它是什么,在何时和何处完成其功能。切点定义了何处使用切面。明确的类和方法名称,或利用正则表达式定义所匹配的类和方法名称来指定这些切点。

2024-02-11 22:00:46 1113

原创 Spring 用法学习总结(二)之基于注解注入属性

有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字(id属性值),而type属性则解析为bean的类型(class属性值)。如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。注解是代码的特殊标记,可以简化xml配置,格式:@注解名称(属性名称=属性值),可以作用在类、方法、属性上。创建Card类,使用@Bean注解创建User对象,name默认是类名(首字母小写)

2024-02-08 22:11:05 589

原创 Spring 用法学习总结(一)之基于 XML 注入属性

Spring是轻量级的开源的JavaEE框架,提供了多个模块Spring可以解决企业应用开发的复杂性Spring有两个核心部分:IOC和Aop(1)IOC:控制反转,把创建对象过程交给Spring进行管理(2)Aop:面向切面,不修改源代码进行功能增强Spring特点(1)方便解耦,简化开发(2)Aop编程支持(3)方便程序测试(4)方便和其他框架进行整合(5)方便进行事务操作(6)降低API开发难度。

2024-02-07 22:05:58 1499

原创 XML学习

XML是可扩展的标记性语言,常用来传输和存储数据。可见于Web中的web.xml和Maven中的pom.xmlversion是版本,encoding是编码。

2024-02-07 15:25:04 403

原创 JavaScript总结(一)

JavaScript是Web的编程语言,是一种弱类型的语言,即变量可以随意赋值为各种类型的值交互性(它可以做的就是信息的动态交互)安全性(不允许直接访问本地硬盘)跨平台性(只要是可以解释 JS 的浏览器都可以执行,和平台无关)

2024-02-02 09:13:04 415

原创 CSS总结

CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式(字体、间距和颜色等)的计算机语言在 head 标签中,使用 style 标签来定义各种自己需要的 css 样式xxx {--style 标签专门用来定义 css 样式代码-->/* 分别定义两个 div、span 标签,分别修改每个 div 标签的样式为:边框 1 个像素,实线,红色。

2024-01-26 15:07:30 546

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除