- 博客(42)
- 收藏
- 关注
原创 【MyBatis-Plus 注解配置】开发中常用注解整理与介绍
不知道朋友们会不会在SpringBoot中集成的时候,总是这个注解那个注解,都不知道哪些是的了,搞得晕乎乎的,所以我整理了一份开发中常用的注解,相信看完你就知道哪些注解是提供的了,以后在开发中就能够更加清晰了。
2025-01-07 18:26:32
457
原创 【MyBatis-Plus 分页插件】深入分析和实战解析
分页的核心目标是减少数据传输量和前端渲染压力。通过限制每次查询的结果数量,分页能够显著提升用户体验。假设数据库表中有 100 万条数据,一次性查询所有数据并展示显然不合理。每页显示 10 条数据用户可自由跳转页码在 MyBatis-Plus 的分页功能中,IPage是分页结果的通用接口,而 Page是其实现类,主要用于封装分页请求和结果。结合MyBatis-Plus 分页插件。
2025-01-06 21:28:06
2114
原创 【MyBatis-Plus 插件】并发控制机制——乐观锁
高并发业务,避免数据覆盖(如订单状态更新、库存扣减)。注意:如果业务中版本号字段不适用,乐观锁可能不合适。通过乐观锁,开发者可以轻松实现数据一致性的保障,尤其在高并发场景下,其非阻塞特性是关键优势。
2025-01-06 13:48:44
983
原创 【MyBatis-Plus 进阶功能】开发中常用场景剖析
MyBatis-Plus(MP)除了封装常见的 CRUD 操作,还提供了一些高级功能,进一步简化复杂场景下的开发工作。本文将逐一讲解 **逻辑删除**、**自动填充**、**多表关联查询**的原理与使用方式,让你快速掌握这些技巧!
2025-01-05 19:00:00
2469
原创 【MyBatis-Plus ORM】数据库和实体类映射
主键生成是 ORM 映射中重要的一环,当往数据库添加字段的时候,此id会根据指定的主键生成策略来进行生成对应的值。适用于主键为自增类型(如 MySQL 的在插入数据时,不需要为主键赋值,由数据库根据自增策略生成。此策略仅在数据库支持自增主键的情况下有效,需要在数据库中保证主键是自增的。MyBatis-Plus 默认的主键生成策略,使用雪花算法生成全局唯一 ID。在插入数据时,MP 自动生成主键值,并在 SQL 中直接插入该值。数据库表的主键类型为BIGINT,需要全局唯一标识符。
2025-01-05 10:00:00
1698
原创 【MyBatis-Plus 条件构造器】全面解析 Wrapper
条件构造器是 MyBatis-Plus 提供的动态 SQL 拼接工具,主要用于生成 SQL 查询中的 WHERE条件部分,支持动态拼接、链式调用以及条件逻辑控制。支持条件排序,可以动态调整排序字段。MyBatis-Plus 的条件构造器为我们提供了构建 SQL 条件的强大工具。从基础的查询条件到复杂的嵌套逻辑,再到链式调用和动态条件,条件构造器可以极大提升开发效率。同时,灵活使用分页、排序等高级功能,可以让你的查询逻辑更清晰、更高效。
2025-01-03 12:46:51
1631
原创 【Java 新特性】Optional类全面解析
Optional 是 Java 8 引入的一个容器类,它可以包含一个值,也可以为空(empty)。它的目标是帮助我们显式地表示值可能为空的情况,从而避免空指针异常。
2025-01-02 09:00:00
891
原创 【MyBatis-Plus 核心接口】BaseMapper 和 IService 深度解析
BaseMapper封装了最基础的 CRUD 操作,例如insertselectByIdupdateByIddeleteById等,直接操作数据库,适合处理简单的增删改查逻辑。提供了一种零配置的开发体验,让开发者无需编写重复的 SQL 语句。IService对BaseMapper进行了进一步封装,包含了一些常用的业务逻辑扩展方法,例如批量插入、分页查询等。通过继承IService,开发者可以更方便地在 Service 层添加自定义的业务逻辑,同时利用已有的 CRUD 功能。
2025-01-01 21:50:15
2294
原创 【Java 新特性】深入浅出 Java Lambda 表达式
Lambda 表达式是一种匿名函数,旨在减少冗长的代码。其核心在于将功能作为参数传递。
2024-12-31 20:04:39
1227
原创 【Java 新特性】常用函数式接口
函数式接口是仅包含一个抽象方法的接口。它们是 Java 8 中引入的核心特性,常与Lambda 表达式一起使用。Java 提供了注解来显式声明一个接口为函数式接口,同时也让编译器帮助我们验证其规范性。必须只有一个抽象方法。可以包含多个默认方法或静态方法。使用注解并非强制,但推荐使用。// 此自定义函数式接口接收两个参数,返回一个 int 类型的值// 输出:8函数式接口让代码更简洁、更灵活,不再是过去冗长的匿名类实现。接口方法签名主要用途接受一个输入,返回一个输出,常用于映射操作。
2024-12-31 16:14:45
1109
原创 Session、Cookie、Token:登录状态管理的三种“神器”
在开发中,用户登录后如何确认“这个人是我”?系统又如何在安全的前提下维持用户状态?我们带着这些疑问,聊聊三种常见的登录状态管理方式:Session、Cookie 和 Token。并且我会用生动的例子和比喻描述这些概念。
2024-12-30 21:20:13
916
原创 【MyBatis-Plus】让 MyBatis 更简单高效
是一款极大提升开发效率的工具,它不仅让我们摆脱了繁琐的基础代码编写,还提供了强大的功能来满足各种场景需求。通过今天的分享,相信你已经对 MP 有了初步的了解。如果你对 MP 感兴趣,不妨动手尝试一下,亲自体验它的便捷性!之后,我会继续进一步展开来讲解开发中常用的部分,以及一些核心机制等内容,感兴趣的朋友可以关注留意一下噢!
2024-12-30 18:41:37
1551
原创 【Spring MVC 异常处理机制】应对意外情况
接下来,我们就来详细聊聊如何用 Spring MVC 的异常处理机制,做一个从容应对错误的开发者!如果某些异常仅与特定的控制器相关,我们可以直接在该 Controller 中捕获并处理这些异常。这种方式的好处是逻辑清晰,控制器自己的异常自己处理。那么问题来了:如何优雅地捕获并处理这些异常,让用户体验不至于因为一时的错误而受损?局部处理特殊逻辑,全局处理通用错误,真正做到优雅应对各种“意外”。将异常信息和状态码绑定到自定义异常中,让错误响应更加规范化。等,局部处理显然不够灵活。,服务的某部分出错,或者。
2024-12-29 19:00:00
802
原创 【Spring MVC 拦截器机制】请求背后的守护者
在 Web 应用中,每一个请求从用户发出到服务器响应,都需要经过一条完整的“处理链”。有时候,我们需要在这条链中加一些“守护者”,为请求执行。Spring MVC 的拦截器机制是开发 Web 应用的利器,通过简单的接口实现和配置,就可以在请求的各个阶段插入自定义逻辑。只是配置好一个拦截器类还无法实现功能,因为此时它只是一个普通的Bean,还需要通过配置将拦截器。拦截未登录用户的请求,或者根据用户角色限制某些接口访问。,或者在视图渲染完成之后,执行一些额外的逻辑。,拦截器都能让你的代码更加模块化和可维护。
2024-12-29 14:00:00
817
原创 【Spring MVC 数据绑定与验证】优雅处理请求数据
在 Web 开发中,从接收用户请求到处理数据,再到确保数据的安全和准确性,数据绑定和验证是两大核心步骤。(通常是 JSON 或 XML 格式)直接绑定到 Java 对象上,非常适合用于 RESTful API 的开发。Spring MVC 会根据请求参数的名称,将数据绑定到 Java 对象的对应字段。映射到方法参数或 Java 对象的字段中,极大地减少了手动解析参数的工作量。是 Spring MVC 的核心注解,用于将。注解,用于触发实体类中的校验规则,并通过。,基于注解的校验方式是最常用的。
2024-12-29 09:00:00
1064
原创 【Spring MVC 常用注解】注解驱动开发的魔法
和:定义控制器。:映射请求路径。和:处理请求参数和路径变量。:对象绑定和数据预填充。:请求体为JSON对象的获取:直接返回数据。这些注解让开发者能够专注于业务逻辑,而不用担心底层的实现细节。如果你在项目中用到这些注解,有什么有趣的用法或者疑问,欢迎留言讨论!😊。
2024-12-28 21:30:00
885
原创 【Spring MVC 核心机制】核心组件和工作流程解析
理解这些组件的工作机制,不仅能帮助你更好地使用 Spring MVC,也能让你在遇到问题时快速定位到具体的环节。Spring MVC 作为一款强大的 Web 框架,将这些复杂的操作高度抽象化,通过组件协作简化了开发者的工作。由于不同的处理器(如基于注解的 Controller 或简单的接口实现)有不同的调用方式,Spring MVC 提供了。HandlerMapping 就像电话客服系统,当你拨打不同的分机号,系统会将你的请求转接给不同的部门。是整个工作流程的核心,贯穿了请求的每一步。
2024-12-28 16:43:37
951
原创 【Spring MVC 核心概念】揭秘概念和整体架构
如果把 Web 应用比作一部机器,Spring MVC 就是这部机器的“精密引擎”,每一个零件都有其独特作用。你有没有想过,当你在浏览器地址栏敲下一个 URL,按下回车,后台到底发生了什么?:用户点了一碗牛肉面,Controller 会去后厨要一份“牛肉面”(业务逻辑),后厨做好后交给服务员,最后服务员把面端到顾客面前。这就是一个标准的请求流程:从用户发出请求,到浏览器接收响应,Spring MVC 精心设计了每一步的分工。它是整个流程的入口和出口,负责把请求转发给合适的组件处理,并将结果返回给客户端。
2024-12-27 23:04:58
1255
原创 【MyBatis核心机制】查询结果映射到 Java 对象的原理和机制
MyBatis 的查询结果映射(Result Mapping)功能,像是一个桥梁,连接了数据库中的结果集和 Java 中的对象。通过它,SQL 查询返回的表数据被自动转换为我们熟悉的 Java 对象。这一过程的背后,依靠的是 反射机制 和 映射规则。接下来,我们一起来看看它的工作原理以及如何实现各种映射。
2024-12-27 20:30:37
952
原创 【MyBatis 核心工作机制】注解式开发与动态代理原理
我们先来简单回顾一下 MyBatis 的基本概念。MyBatis 是一个半自动化的 ORM(对象关系映射)框架,它通过 SQL 映射文件(XML 或注解)将 Java 对象与数据库表中的数据进行映射。与传统的 JDBC 操作相比,MyBatis 提供了更简洁的代码和更灵活的 SQL 操作方式。在注解式开发中,我们将 SQL 语句直接写在 Java 接口的方法上,MyBatis 会根据这些注解自动执行相应的 SQL。这种方式简化了传统 XML 配置,适用于一些简单、直接的数据库操作。
2024-12-26 22:44:11
1307
原创 【MyBatis核心概念】精简持久层开发
MyBatis 是一个优秀的持久层框架,用于简化 Java 程序与数据库之间的交互,特别是在传统 JDBC 操作冗长且繁琐的情况下,为开发者提供了更灵活的 SQL 管理方式。
2024-12-26 11:00:00
936
原创 【Spring核心思想】面向切面编程(AOP)
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,用于分离横切关注点,以增强代码模块化和可维护性。核心概念横切关注点:横切关注点是指散布在系统中、与业务逻辑无直接关系但对多个模块都有影响的功能,例如日志记录、事务管理、性能监控和安全校验等。切面:切面(Aspect)是横切关注点的实现部分,用于定义和应用这些通用功能。核心目标在不修改原有代码的情况下增强功能,通过动态代理机制,能够在业务过程中某些业务方法执行的前后或异常时切入自定义逻辑。
2024-12-25 15:52:36
1056
原创 【Spring核心思想】IoC容器与依赖倒置(DI)
Spring提供 IoC 容器,扫描 Bean,处理依赖注入。通过反射将UserMapper动态代理对象注入到。MyBatis动态生成UserMapper的代理实现类,负责将方法调用转化为 SQL 查询。代理类中通过将方法调用委托给 MyBatis 的 SQL 执行器。
2024-12-25 11:00:00
2211
原创 开发场景中Java 集合的最佳选择
集合类底层数据结构主要优点主要缺点ArrayList动态数组查询效率高,支持随机访问插入删除效率低,扩容代价大LinkedList双向链表插入删除效率高,内存灵活查询效率低,占用内存大HashSet哈希表查询和去重效率高无序存储,受哈希冲突影响哈希表 + 双向链表有序存储,去重效率高内存占用较高TreeSet红黑树有序存储,按自然顺序或自定义顺序排序性能略低于哈希表,操作复杂度为O(log n)HashMap哈希表查找和插入效率高,支持键值对映射无序存储,受哈希冲突影响。
2024-12-24 23:26:58
1304
原创 从 JVM 的角度聊聊 Java 程序的入口 —— main 方法的秘密
Java 的目标是「一次编写,到处运行」,所以 JVM 需要一种统一的启动方式,避免开发者各自定义入口方法带来的混乱。JVM 给类分配内存,初始化静态变量,并解析符号引用(比如方法名、变量名),转换成实际的内存地址。今天,我们就来聊聊这个「老生常谈」的话题,探 究其中的奥秘。时,到底发生了什么?JVM 不信任你写的代码,加载之前会检查字节码是否合法,确保没有「炸弹」(非法操作)。方法,JVM 就知道有那么一个程序要执行了,会开一个线程(称为。方法,而是容器(Tomcat、Jetty)来帮你运行程序。
2024-12-17 19:05:11
1189
1
原创 【Vue3 组件通信全攻略】实战与解析
在开发中,组件之间的通信是 Vue 应用的重要环节,不同场景下需要选择合适的方式来实现。本文通过多个典型案例,涵盖了父子组件通信、跨层级组件通信,以及任意组件通信的实现方法,包括propsemitv-modelprovide与inject等 Vue 的核心功能,甚至扩展到Pinia等状态管理工具。父子组件通信适合直接的上下级关系,灵活且简单。跨层级通信通过依赖注入可以减少层级传递的复杂性,但要注意适度使用。任意组件通信在复杂场景下,使用状态管理工具如Pinia。
2024-12-16 23:55:44
819
1
原创 从 Promise 到 Axios:轻松解锁异步编程
Promise 虽然解决了回调嵌套的问题,但链式调用依然可能让代码变得不够直观。本文将带你一步步深入了解,帮助你弄清它们的背景、解决的问题以及实际应用。当任务需要按照一定顺序完成时,这种嵌套写法会变得非常混乱,特别是任务之间还需要处理错误或者传递结果的时候。如果你正在开发中处理异步任务,比如网络请求、文件操作,或者用户交互的处理,那么你一定接触过。是一个基于 Promise 的 HTTP 库,它让网络请求变得更加优雅。还支持链式调用,上一个处理返回的成功的结果可以传递给下一个。捕获到,整个异步函数将。
2024-12-16 23:25:38
1273
原创 漫谈 Vercel Serverless 函数
我们需要明白什么是。顾名思义,Serverless 并不是没有服务器,而是。就像你去超市买东西,不用自己去种菜、养鸡,直接挑选、付款就好。Vercel 的 Serverless 函数也是类似的,它,你只需专注于编写处理逻辑,Vercel 会负责其余的部分。Vercel 的 Serverless 函数的是,在你每次发出 HTTP 请求时被,它就像你雇了一个“临时工”来处理你的请求,任务完成后他就离开了,不会一直待着。接下来,让我们一起看看它是如何工作的吧!
2024-12-14 23:32:09
1318
原创 【现代服务端架构】传统服务器 对比 Serverless
传统服务器架构(传统的后端架构)指的是我们使用固定的服务器(可以是物理服务器,也可以是虚拟服务器)来部署应用程序、处理请求和管理数据库。在这种架构下,我们需要自己管理整个服务器,包括操作系统、数据库、应用程序以及所有的基础设施。Serverless(无服务器架构)是一个云计算模型,允许开发者编写和运行应用程序而无需管理服务器。这并不意味着没有服务器,而是指服务器的管理和维护交给云服务提供商。开发者只需要关心业务逻辑,剩下的交给云平台来自动处理。
2024-12-14 22:39:13
1474
原创 【网络请求的进化之旅】从表单到Axios
从传统表单到现代化的 Axios,我们见证了网络请求的演化历程。这不仅是技术的进步,也是前端开发者为提升用户体验所做的努力。了解这些基础概念,有助于我们更好地理解和运用现代工具。所以,下次你用 Axios 时,不妨想想这段进化史,是不是更能体会它的优雅之处了呢?
2024-12-12 23:55:25
991
原创 Vite 打包构建的产物
Vite 在开发环境下,项目文件根目录就是资源访问的根路径;在生产部署环境下,通过配置文件中的base配置项中指定的路径为资源访问根路径,默认为"/",就是将你的那个dist文件夹作为根路径Vite 的打包过程将你的开发代码转化成高性能的生产代码,包含优化后的 HTML、JS 和资源文件。在开发环境和生产环境之间,Vite 通过路径的智能解析和调整,帮你省去了很多繁琐的配置工作。但同时,我们也需要注意正确配置base和部署路径,以确保资源能在生产环境中正常加载。
2024-12-12 13:57:54
1459
原创 【Vite】解锁前端开发速度的秘密武器
Vite,意为“快”(法语中读作/vit/它由 Vue.js 的作者尤雨溪开发,因此也是因为这个先天原因,让他可以更好的配合 Vue 来使用。旨在解决传统构建工具慢、配置复杂的问题。极速冷启动:得益于原生 ESM(浏览器支持的 ES 模块)。按需热更新:基于模块化的 HMR(热模块替换),只更新需要的部分,速度飞快。简单地说,Vite 是一种“快如闪电”的开发体验。预打包是指 Vite 在项目启动时,使用esbuild对第三方依赖(如 npm 包)进行一次性打包。
2024-12-11 18:00:00
1115
原创 【构建工具】现代开发的重要角色
代码转译:将现代代码(如TypeScriptLESSSCSS)转换为浏览器可以直接运行的代码。例如,原来TypeScript使用tsc编译器进行编译,LESS和SCSS原本依赖于lessc和node-sass等工具,而现在通过 Vite 的内置支持,这些文件可以直接一步集成转换。同时,这种改进减少了切换工具的时间,节省了编译流程所需的复杂性,从而大大提高了开发效率。模块打包:把分散的模块整合成少量文件,以减少网络请求,如将import和export转换为浏览器能够理解的逻辑。性能优化压缩代码。
2024-12-11 10:00:00
826
原创 【Vue 3 + Vite】快速搭建现代前端项目
在使用 Vue 3 和 Vite 创建项目后,你会发现项目的核心文件包括index.html、main.ts和 App.vue。对于这些核心文件的理解很为重要,所以我写好了详细的注释,帮助朋友们更好地理解它们的作用和结构。这是项目的入口文件,也是传统意义上的 HTML 模板。Vite 使用index.html作为开发和构建的起点。-- 网页的字符编码,确保页面正确显示多语言文本 -->-- 设置视口,确保页面在移动设备上的良好展示效果 -->
2024-12-09 23:11:40
1911
原创 开发环境服务器 vs 生产环境服务器:开发与生产须分明
与开发环境的轻快与灵活不同,生产环境服务器肩负着重任——它不仅需要高效稳定,还得能应对大量的用户请求。生产环境的目标是提供稳定、可靠、且高性能的服务,确保在流量高峰时网站不会“瘫痪”。我们接下来介绍两个常用的生产环境下的部署服务器。
2024-12-09 21:24:00
1586
原创 前端与后端:数字世界里的两位“英雄”
前端(Frontend),是你和网站或应用程序的直接对话窗口。简单来说,就是你在屏幕上看到的一切。它包括网页的排版、按钮的颜色、动画的流畅度,以及你在网页上点击时产生的交互效果。前端工程师的主要任务就是把用户和应用的互动变得既美观又高效。设计并构建用户界面(UI),让按钮、输入框、图表等元素看起来既美观又实用。处理用户交互(点击、输入、拖拽等),让每个动作都能即时反馈。展示动态内容,通过调用后端的 API 获取数据并呈现给用户。提供流畅的用户体验,包括动画、页面切换等。技术栈:HTML。
2024-12-08 10:00:00
1489
原创 让 JavaScript 更加模块化:揭开 ES6 模块化的神秘面纱
ES6 模块化不仅仅是 JavaScript 语法的升级,它改变了我们组织代码的方式。通过命名导出默认导出再导出和动态导入等强大特性,代码变得更加模块化、清晰易懂、维护起来也更加轻松。无论是浏览器端还是 Node.js,ES6 模块化的优势已经无可忽视。所以,下次当你编写 JavaScript 代码时,记得给每个模块找一个恰当的角色,让它们协同合作,共同编织出一部完美的“剧本”。
2024-12-06 22:20:15
733
原创 从浮动到弹性布局的演进:细说为什么要用 Flexbox
Flexbox 的出现,彻底改变了前端布局的方式。它不仅解决了浮动、表格布局和绝对定位的痛点,还提供了更加直观、简洁的布局方法。随着响应式设计和动态布局的需求不断增加,Flexbox 已经成为了前端开发者的必备技能。Flexbox 的优势总结。
2024-12-06 19:07:19
757
原创 API接口简介:让前后端无缝沟通
接口的作用不可小觑,它不仅仅是数据传输的载体,更是前后端之间的“无缝衔接”!掌握了 API 接口的开发和调用,你可以在前后端分离的项目中如鱼得水,畅游在互联网的世界里无论是简单的 GET 请求,还是复杂的 POST、PUT 操作,API 都能帮助我们实现不同功能。通过设计的规范,你还可以使得接口更加易于维护、易于理解接下来,不妨动手试试搭建一个自己的 API 服务,利用快速创建一个 RESTful API,体验开发和测试的乐趣吧如果你对接口有任何疑问,或者想聊聊技术相关的事儿,随时留言,我们一起交流。
2024-12-03 23:19:29
1610
原创 深入了解网站优化:SSR、SSG、ISR、CSR 和 SEO
在网站开发中,和CSR是不同的页面渲染方式,它们各自有不同的优势和适用场景。而SEO 优化则是保证网站在搜索引擎中获得更好排名的关键。通过合理选择这些技术,你可以让网站加载更快、用户体验更好,并提高网站的可见性和流量。
2024-12-03 21:45:34
1243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人