自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MyBatis-Plus超详细教程,从入门到精通

其核心定位是「增强不改变」,即引入MP后,不会对现有MyBatis工程产生任何侵入性影响,开发者依然可以使用MyBatis的原生语法,同时能享受MP提供的各种便捷功能,彻底摆脱重复的CRUD代码编写。关于多表操作的解决方案,MP提供两种常用思路:方式一:沿用MyBatis的原生方式,编写一对一、一对多、多对多的关联查询SQL;方式二:在Service层通过多次单表条件查询,再通过代码逻辑组装关联数据(适合中小项目,简化SQL编写)。eq:等于(=);ne:不等于(!=);gt:大于(>);

2026-03-05 17:41:51 171

原创 Docker实操全解析:常用镜像安装+自定义镜像构建

commit命令适合简单的镜像定制,但无法实现版本控制、无法复用构建步骤。Dockerfile是一个文本文件,包含一系列构建指令,可精确控制镜像的构建过程,支持版本控制、批量构建,是企业级开发中定制镜像的首选方式。本文讲解了Docker常用镜像(JDK、Tomcat、MySQL、Nginx)的安装步骤,重点强调了MySQL的数据持久化、Nginx的配置修改和项目部署,以及两种定制镜像的方式(commit命令+Dockerfile)。

2026-03-03 16:06:00 806

原创 Docker镜像与容器常用操作全解析

本文涵盖了Docker镜像、容器的核心操作,以及网络映射、项目部署的完整流程,所有命令均经过实操验证,适合新手入门和日常实操参考。以下是新手常踩的坑,务必注意:1. 拉取镜像时,不指定版本会默认拉取latest,建议根据项目需求指定具体版本(如mysql:5.7),避免版本兼容问题;2. 删除镜像或容器时,谨慎使用-f强制删除,避免误删正在运行的容器或核心镜像;3. 端口映射时,确保宿主机端口未被占用(可通过netstat -tuln | grep 端口号查看),否则容器启动失败;

2026-03-02 22:10:57 479

原创 Docker从入门到安装:一篇搞定核心知识点

对比项传统虚拟机Docker容器隔离方式虚拟硬件,运行完整操作系统沙箱机制,共享宿主机内核体积庞大(几GB)小巧(几MB)启动速度几分钟秒级资源消耗高低Docker的核心价值在于“环境隔离”和“可移植性”,它解决了开发与运维之间的环境兼容痛点,让应用部署变得简单、高效。本文从“为什么用Docker”“Docker是什么”“Docker与虚拟机的区别”“Docker架构”“安装实操”“镜像加速”六个方面,梳理了Docker的核心知识点,适合新手入门。

2026-03-02 18:04:40 807

原创 Nginx反向代理:从概念、区别到实战案例

代理,也叫网络代理,是一种特殊的网络服务。它的核心作用是:让一个终端(通常是客户端,比如你的电脑、手机)通过这个“中转站”,与另一个终端(通常是服务器端)进行非直接的连接。简单来说,就是客户端和服务器不直接“对话”,而是通过中间的代理服务器传递信息。生活中最常见的例子就是网关、路由器——它们本质上都具备网络代理功能。代理服务的核心价值的是保障隐私和安全:通过代理服务器中转,能隐藏真实的客户端或服务器地址,在一定程度上阻止网络攻击,避免真实终端直接暴露在公共网络中。

2026-02-28 18:17:00 750

原创 从零入门Nginx:概述、安装部署到实战配置,一篇吃透

Nginx是一款由俄罗斯程序设计师伊戈尔·西索夫(Igor Sysoev)开发的高性能HTTP服务器、反向代理服务器,同时也能作为电子邮件(IMAP/POP3)代理服务器。它最突出的优势的就是“高性能+低消耗”:官方测试显示,Nginx能轻松支撑5万并发连接,而CPU、内存等系统资源的占用却极低,运行稳定性拉满,这也是它能被广泛应用的核心原因。Nginx仅能部署静态项目(比如HTML、CSS、JS、图片等静态资源),而Tomcat是专门用于部署Java Web动态项目的服务器软件。

2026-02-28 18:09:54 648

原创 Linux常用命令实操全解析

安装软件(CentOS系统常用,比如,安装wget工具;Ubuntu系统用vi/vim:文本编辑器(本文仅介绍基础用法,后续可单独整理进阶操作),核心快捷键:Esc:退出编辑模式,进入命令模式(所有命令需在命令模式输入);i/insert:进入编辑模式(开始输入内容);/关键词:查找内容,按n查找下一个,按N查找上一个;dd:删除当前行,yy:复制当前行,p:粘贴复制的内容,u:撤回上一步操作;保存退出::wq(保存并退出)、:w(仅保存)、:q(仅退出)、:wq!(强制保存退出)、:q!

2026-02-27 16:05:00 872

原创 Hutool(文件批量导入导出)+JWT高频面试题

考点解析:考察Hutool的核心定义,以及与传统POI的区别,重点突出Hutool的“简化开发”优势,面试官常延伸问“项目中为什么选择Hutool而非原生POI”。核心答案Hutool是一款Java工具类库,封装了Java开发中常用的工具方法(如字符串处理、日期工具、IO操作、办公文档处理等),核心目标是“简化开发、提高效率”,无需重复编写冗余代码。其中,Hutool的hutool-poi模块专门用于Excel、Word等办公文档的导入导出,底层封装了Apache POI,解决了原生POI的诸多痛点。

2026-02-26 19:46:07 795

原创 WebSocket+Netty高频面试题

考点解析:考察WebSocket的核心定义,以及与HTTP的本质区别,重点区分“单向通信”与“双向通信”的差异,面试官常延伸问“为什么不能用HTTP实现实时通信”。核心答案WebSocket是一种基于TCP的全双工、双向通信协议,运行在应用层,允许客户端和服务器之间建立持久连接,双方可以随时向对方发送数据,无需频繁发起请求(无轮询开销)。与HTTP的核心区别:通信方式:HTTP是单向通信(客户端发起请求,服务器被动响应);WebSocket是双向通信(连接建立后,双方可主动发送数据)。

2026-02-26 19:33:13 800

原创 基于SpringBoot+JWT 实现Token登录认证与登录人信息查询

本文基于SpringBoot+JJWT,完整实现了Token登录认证与登录人信息查询功能,核心优势在于:1. 无状态认证:服务器无需存储会话信息,减轻服务器压力,支持分布式部署,解决传统Session认证的弊端。2. 代码简洁可复用:JWT工具类、拦截器、接口代码均可直接复用,只需替换实体类和Service,即可快速集成到各类前后端分离项目中。3. 安全性高:通过密钥签名Token,防止Token被篡改;Payload不存储敏感信息,降低信息泄露风险;拦截器统一拦截,确保接口安全。

2026-02-25 21:16:36 1074

原创 基于SpringBoot+Hutool-POI 实现文件上传下载与学生数据批量导入导出

本文基于SpringBoot+Hutool-POI,完整实现了文件上传下载、学生数据批量导入导出功能,核心优势在于:1. 代码简洁:借助Hutool-POI封装的API,避免了POI原生API的繁琐操作,几行代码即可实现Excel导入导出,开发效率提升50%以上。2. 可复用性强:所有功能集成在一个控制器中,代码结构清晰,可直接复制到自己的项目中,替换实体类和Service即可使用。

2026-02-25 21:04:38 1006

原创 基于Netty+WebSocket+DeepSeek AI 实现即时聊天功能

本文通过Netty+WebSocket+DeepSeek AI,完整实现了即时AI聊天功能,核心亮点在于:1. 高性能:Netty的NIO模型支持高并发连接,相比传统WebSocket实现,响应速度更快、资源占用更低。2. 高可用:AI服务添加超时重试机制,WebSocket处理器保证线程安全,降低系统故障概率。3. 易扩展:各模块职责解耦,可轻松扩展功能(如添加多用户聊天、AI模型切换、消息持久化等)。扩展方向:多用户聊天:修改消息处理器,支持用户之间的点对点聊天(不仅仅是用户与AI聊天)。

2026-02-25 20:57:12 931

原创 Java代理模式精讲:静态代理+JDK动态代理

给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用——简单说,就是“不直接访问目标对象,通过代理对象间接访问,同时实现额外功能”。定义买衣服的接口,声明核心业务方法(做衣服),让目标类和代理类共同实现。/*** 买衣服的接口(核心业务定义)* 目标类和代理类都需要实现此接口*/// 核心方法:制作衣服,参数为衣服尺码衣服工厂是目标类,实现ByClothes接口,专注于核心业务——制作衣服,不关注额外增强功能。/*** 目标类:衣服工厂(真实对象)* 专注于核心业务:制作衣服。

2026-02-24 22:34:20 919

原创 Java构造器精讲:从基础特征到权限修饰符

结合前面的知识点,整理5个新手最容易踩的构造器易错点,也是面试高频考点,记牢这些,避免写代码报错、面试翻车。显式定义构造器后,默认无参构造器会消失,如需使用无参创建对象,必须手动定义;构造器没有返回值,连void都不能写,否则就是普通方法,无法被JVM自动调用;构造器名必须与类名完全一致(大小写一致),否则不是构造器;默认修饰符与protected的区别:默认修饰的构造器,其他包下的子类无法访问;protected修饰的构造器,其他包下的子类可以访问;

2026-02-24 22:27:42 889

原创 Java拷贝精讲:彻底分清浅拷贝与深拷贝

*** 实体类:用于演示拷贝操作* 包含用户名、密码两个基本类型属性*/// 基本类型属性(默认值初始化)private String username = "张三";// getter/setter方法(用于读取和修改属性值)1. 浅拷贝拷贝地址,深拷贝拷贝数据;浅拷贝共享底层资源,深拷贝完全独立,这是两者的核心区别;2. Java中直接赋值是浅拷贝,new关键字+构造函数、clone()、序列化等方式可实现深拷贝;

2026-02-24 22:21:21 966

原创 Java多线程精讲:从CPU底层到锁机制

一个线程持有某把锁后,再次请求这把锁时,不会被自己阻塞,可以直接再次获得这把锁——这就是锁的重入性。本文从CPU底层原理入手,循序渐进拆解了多线程的本质、数据安全问题、锁机制的核心逻辑,结合实战案例和踩坑场景,梳理出以下核心考点(面试必记):1. 多线程的本质:单核CPU通过“时间片轮转”实现伪并行,多核CPU通过多内核实现真并行;2. 数据安全问题的根源:多个线程共享进程的内存资源,同时操作同一块共享资源,导致数据覆盖、计算错误;

2026-02-24 22:13:42 937

原创 Java位运算详解:原理、用法及实战场景(面试重点)

位运算与移位运算的核心优势是运算效率极高,本质是直接操作二进制位,跳过了十进制与二进制的转换环节,适合底层开发、高频运算等对效率要求极致的场景。但由于其语法晦涩、可读性较弱,实际业务开发中使用频率较低——毕竟代码的可维护性、可读性,往往比极致的效率更重要(除非有明确的性能瓶颈)。但对于Java学习者和面试者而言,位运算及其应用场景是必须掌握的知识点:一方面,它能帮助我们更深入理解计算机存储数据的底层逻辑(二进制、补码);

2026-02-24 21:57:39 534

原创 Java基础运算符:从用法到陷阱,实战避坑全指南

陷阱1:整数除法误判为浮点数除法——比如5/2,新手容易误以为结果是2.5,实际是2(小数部分被舍弃),需将其中一个操作数转为浮点数(如5.0/2)才能得到小数结果;陷阱2:整数除以0——新手可能忽略“整数不能除0”的规则,导致程序报错,而浮点数除0不会报错,结果为Infinity(无穷大);陷阱3:混合运算优先级——忘记“先乘除后加减,有括号先算括号内”的规则,导致计算结果错误,建议复杂运算尽量加括号,提高可读性。在for循环中,循环变量i本身有一个后置自增(i++)

2026-02-23 11:40:20 867

原创 Java8种基本数据类型:从基础到难点(byte溢出+浮点精度丢失全解析)

计算机存储整数时,不会直接存储十进制数值,而是存储其对应的二进制编码,而二进制编码分为原码、反码、补码三种,其中计算机实际存储和运算的是补码,原码和反码仅为中间过渡形式。原码:最直观的二进制编码,符号位+数值的二进制表示。正数(45):符号位0,数值位为45的二进制=00101101 → 原码:00101101;负数(-45):符号位1,数值位为45的二进制=00101101 → 原码:10101101。反码:用于解决计算机减法运算的问题,规则如下: 示例:45的反码=00101101(与原码相同)

2026-02-23 11:30:18 645

原创 零基础吃透Java核心基础:JDK/JRE/JVM全解析+跨平台原理

整篇博客下来,我们梳理了Java体系基础、JDK/JRE/JVM的细节、区别联系,以及跨平台原理,最后用几句总结,帮你快速梳理核心知识点,巩固记忆,不管是入门还是面试,都能轻松应对:Java体系:JavaSE是核心基础,JavaEE用于Web开发,JavaME用于移动终端开发,开源社区助力生态完善;SDK:不是晦涩的概念,而是“工具包+使用说明书”,供开发者直接复用别人的程序功能;环境变量:核心是“任何路径下都能运行Java命令”,方便开发和运行程序;三者关系:JDK包含JRE,JRE包含JVM;

2026-02-23 11:17:44 1148

原创 吃透Spring Bean:生命周期、单例特性、作用域及扩展方式

实例化 → 属性注入 → 初始化 → 就绪 → 销毁。其中,初始化和销毁阶段支持大量自定义扩展,这也是Spring Bean生命周期的灵活之处;而实例化和属性注入,是Spring容器自动完成的核心步骤,无需开发者干预。补充:Bean的生命周期是“单例Bean的完整流程”,非单例Bean的生命周期会有细微差异。Spring中的单例,和设计模式中的“单例模式”有区别,核心差异在于「作用域」:设计模式中的单例:指一个类在整个JVM中,只有一个实例对象,无论通过何种方式获取,得到的都是同一个对象;

2026-02-23 11:03:41 554

原创 拆解Spring核心:IOC与AOP底层原理

很多人对IOC的理解陷入了“字面误区”,认为“控制反转”是一种具体的技术——其实不然,它是一种对象创建与管理的权限反转。在传统Java开发中,对象的创建、依赖关系的维护,都是由开发者手动控制的。比如我们需要一个UserService,就必须手动new一个UserService实例;如果UserService依赖UserDao,还需要手动new UserDao,再将其注入到UserService中。这种方式会导致代码耦合度极高,一旦某个对象的实现发生变化,所有依赖它的地方都需要修改,维护成本极高。

2026-02-23 10:52:24 705

原创 SpringMVC分层介绍与处理流程详解

SpringMVC的分层严格遵循MVC(Model-View-Controller)设计模式,同时在实际开发中衍生出更细致的分层(适配企业级开发规范),核心分为5层,从前端请求接收到底层业务处理、响应返回,各层职责单一、协同工作,形成闭环。表现层(Controller)→ 视图层(View)→ 业务逻辑层(Service)→ 数据访问层(Dao/Mapper)→ 实体层(Entity/POJO)

2026-02-19 22:44:36 867

原创 从零搭建SpringBoot+Vue+Netty+WebSocket+WebRTC视频聊天系统

本文从零搭建了一套基于SpringBoot+Vue+Netty+WebSocket+WebRTC的全栈视频聊天系统,保留了全部完整可运行代码,拆解了核心技术原理和关键流程,解决了NAT穿透、信令转发、音视频采集与传输等核心问题。整套系统无需第三方音视频SDK,完全基于原生技术栈开发,兼顾实用性与可扩展性,适合作为实时通信项目的基础框架,也可用于学习WebRTC、Netty、WebSocket等核心技术。

2026-02-05 19:35:19 997

原创 理解WebRTC:浏览器原生实时音视频通信

看到这里,相信大家已经理清了 WebRTC、ICE、STUN 以及信令服务器之间的关系,我们用一句话总结 WebRTC 实现实时音视频通信的核心逻辑:WebRTC 是“主角”,负责实现音视频数据的实时传输(建立 P2P 连接后直接接管传输);ICE 是“协调者”,负责解决 NAT 穿透问题,统筹各种辅助工具;STUN 是“核心工具”,负责帮内网设备获取公网 IP + 端口;信令服务器(如 WebSocket)是“桥梁”,负责设备之间交换公网地址等信令信息,最终实现两个设备的点对点实时通信。

2026-02-04 19:24:24 778

原创 深入浅出理解WebSocket

看到这里,相信大家已经对WebSocket有了清晰的理解。我们再来梳理一下核心逻辑:HTTP协议的核心痛点是“半双工通信”,无法实现服务器主动推送数据;为了解决这个问题,开发者们设计了定时轮询、长轮询两种折中方案,但它们本质上还是“伪推送”,无法满足高频、实时的双向通信需求。

2026-02-04 19:16:45 785

原创 深度拆解MyBatis执行流程:从SQL编写到结果返回的全链路解析

初始化阶段:加载配置文件,构建SqlSessionFactory,初始化Configuration与核心组件,为执行流程提供基础;会话阶段:通过SqlSessionFactory创建SqlSession,绑定Executor与事务,开启数据库会话;执行阶段:通过Mapper动态代理拦截方法,解析获取MappedStatement,由Executor协调StatementHandler、ParameterHandler、ResultSetHandler完成SQL执行、参数绑定、结果映射;收尾阶段。

2026-01-18 14:34:20 744

原创 深入剖析SpringBoot自动装配原理:从依赖管理到注解驱动

依赖层:通过实现版本仲裁,通过Starter场景启动器实现依赖的场景化导入,为自动配置提供环境支撑;入口层注解组合,触发组件扫描和自动配置开启;核心层通过定义扫描范围,通过完成自动配置类的筛选、排序与导入,最终实现Bean的自动注册。这一机制既保留了Spring框架的灵活性,又通过“约定大于配置”的设计大幅降低了开发成本,让开发者无需关注底层配置细节,专注于业务逻辑实现。理解自动装配原理,不仅能帮助我们快速定位配置问题,更能让我们在复杂场景下灵活定制配置,真正掌握SpringBoot框架的使用精髓。

2026-01-18 14:28:18 687

原创 SSM常见核心面试问题深度解析

Spring的核心优势在于其两大核心特性——控制反转(IOC)和面向切面编程(AOP),二者共同支撑起Spring的轻量级、可扩展架构。Spring IOC(Inversion of Control,控制反转):核心是“将对象的创建权交给Spring容器”,而非由开发者在代码中直接通过new关键字创建。通过IOC容器,我们可以专注于对象的业务逻辑,而非对象的依赖管理,实现了组件间的解耦。Spring AOP(Aspect-Oriented Programming,面向切面编程)

2026-01-09 22:16:45 863

原创 Spring Boot集成JWT Token实现认证授权完整实践

拦截器需要通过配置类注册到Spring容器中,并定义拦截规则,位于LoginConfig类(实现WebMvcConfigurer接口),核心逻辑如下:通过@Autowired注入LoginInterceptor实例重写addInterceptors方法,通过InterceptorRegistry注册拦截器通过addPathPatterns("/**")设置拦截所有请求通过excludePathPatterns("/s/login")设置放行登录接口,确保用户可以正常获取Token。

2026-01-08 15:48:07 1139

原创 Java视角下Cookie、Session、Token深度解析与实战

Cookie是服务器发送给客户端浏览器的一小段文本数据(通常不超过4KB),浏览器会将其保存到本地(内存或磁盘)。之后,客户端每次向同一服务器发送请求时,都会自动携带该Cookie数据,从而让服务器识别出客户端身份。从Java Web角度看,Cookie是Servlet规范中的标准组件,由类封装,服务器通过response对象向客户端写入Cookie,通过request对象读取客户端携带的Cookie。Session(会话)是服务器为每个客户端(浏览器)创建的内存级状态对象。

2026-01-07 20:41:11 933

原创 超详细Spring Boot实战案例:从项目搭建到CRUD全实现

本文基于一套完整的Spring Boot实战代码,从项目架构、核心模块解析、运行配置到接口测试,全方位拆解了Spring Boot整合MyBatis实现数据交互与接口开发的全过程。该项目虽然简单,但涵盖了Spring Boot开发的核心知识点,是入门Spring Boot的优质实战案例。通过本项目的学习,开发者可以快速掌握Spring Boot的核心特性、MyBatis的整合流程以及接口开发的规范,为后续开发更复杂的企业级应用奠定坚实的基础。

2026-01-07 19:27:24 1438 1

原创 深度解析Spring Bean生命周期以及LomBok插件

Spring Bean生命周期8阶段:创建 → 注入 → 初始化前 → 初始化 → 初始化后 → 就绪 → 销毁 → 容器关闭;生命周期回调3种实现方式及优先级:注解(@PostConstruct/@PreDestroy)> 接口(InitializingBean/DisposableBean)> XML(init-method/destroy-method);Bean后置处理器作用:全局拦截所有Bean的初始化前后阶段,实现增强逻辑,是AOP的基础;

2026-01-06 21:48:41 1266

原创 Spring核心知识全解析:从入门实战到进阶

Spring是一款开源的设计层面框架,核心目标是解决业务逻辑层与其他各层的紧耦合问题,将面向接口的编程思想贯穿整个应用开发。它诞生于2003年,由Rod Johnson在其著作《Expert One-On-One J2EE Development and Design》中阐述的理念与原型衍生而来,专为简化企业级应用开发的复杂性而创建。Spring最显著的优势在于其分层架构,开发者可按需选择使用框架中的特定组件,同时它为Java EE应用开发提供了一站式的集成解决方案。IOC(控制反转)

2026-01-06 21:36:30 1312

原创 深度解析SpringMVC实战项目:从配置到请求处理全流程

通过对本次项目的深入解析,我们可以梳理出SpringMVC的核心工作流程,帮助开发者建立完整的框架认知:客户端发送HTTP请求,请求被DispatcherServlet(前端控制器)接收。DispatcherServlet调用处理器映射器(HandlerMapping),根据请求URL查找对应的处理器(Controller)。处理器映射器返回处理器执行链(包含处理器和拦截器)给DispatcherServlet。

2026-01-05 21:17:57 949

原创 Spring JDBC实战指南:从基础操作到事务管理全解析

/get set方法本文从Spring JDBC的核心组件JdbcTemplate入手,详细讲解了其四大类核心方法的应用场景,通过完整的实操案例实现了用户表的增删改查操作,最后结合转账案例深入剖析了Spring事务管理的两种实现方式及核心知识点。Spring JDBC通过简洁的API设计,极大降低了原生JDBC的使用难度,而声明式事务管理则让开发者无需关注事务的底层实现,只需通过简单配置即可保障数据一致性。

2026-01-04 21:30:34 1144

原创 从原理到实战:Spring AOP全解析

AOP全称为Aspect Oriented Programming,即面向切面编程。它并非一种具体的技术,而是一种编程范式,隶属于软件工程范畴,指导开发者如何更合理地组织程序结构。AOP的思想最早由AOP联盟提出并制定了相关规范,Spring框架引入AOP思想时完全遵循该规范。其核心是通过预编译或运行期动态代理技术,实现程序功能的统一维护。作为OOP(面向对象编程)的延续,AOP弥补了OOP在横向功能扩展上的不足。

2026-01-03 18:43:06 1132

原创 MyBatis实现图书借阅管理系统核心功能全解析(附代码)

查询每本书的最后一次借阅记录(包括书名、借阅者姓名、借阅日期),需对借阅记录表按书籍ID分组,并取每组中最大的借阅日期。实体类遵循JavaBean规范,提供完整的getter/setter方法和toString方法,属性名与SQL查询结果别名保持一致,确保映射正确。// getter/setter方法本文基于图书借阅管理系统的10道核心业务题目,完整实现了动态查询、分页、统计分析、批量操作等高频功能,涵盖了MyBatis开发的核心知识点。

2025-12-28 23:11:15 1181

原创 深度解析MyBatis缓存机制:从基础原理到实战配置

MyBatis的两级缓存机制是其性能优化的重要手段,掌握以下核心要点,能帮助你在实际开发中合理使用缓存:一级缓存默认开启,无需配置,作用于SqlSession内部,适用于单次会话的高频查询;二级缓存需手动配置(全局开关+映射声明+序列化),作用于SqlSessionFactory,适用于多会话共享高频数据的场景;增删改操作会清空一、二级缓存,这是保障数据一致性的关键设计,无需手动处理;二级缓存存储的是数据而非对象实例,多次查询会创建新的对象实例;

2025-12-27 23:21:13 999

原创 深入浅出MyBatis事务:从核心意义到实践管理

回到最初的问题:事务存在的意义是什么?本质上,事务是为了在复杂的数据库操作中,保障数据的一致性和业务的可靠性,避免因“部分成功”导致的各种数据错乱问题。而MyBatis作为持久层框架,通过JDBC事务管理模式,将事务的掌控权交给开发者,默认的手动提交机制虽然需要额外编写commit()和rollback()代码,但却为复杂业务场景提供了足够的灵活性。核心要点回顾:事务是不可分割的操作集合,核心原则是“要么全成、要么全败”;ACID特性(原子性、一致性、隔离性、持久性)是事务的基石;

2025-12-27 23:11:39 1138

空空如也

空空如也

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

TA关注的人

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