- 博客(54)
- 收藏
- 关注
原创 5 种 SpringBoot 项目创建方式
阿里云官网下载 zip 包的方式核心解决了国内网络访问官方服务器慢的问题,且兼容所有 IDEA 版本;操作关键是访问,配置信息时优先选Jar打包方式和Spring Web核心依赖;解压导入 IDEA 后,等待 Maven 加载依赖即可直接开发,是国内非旗舰版 IDEA 用户的首选方案。
2026-01-07 21:14:13
617
原创 自定义代码生成器实战笔记(模板驱动,一键生成分层代码)
/ 自定义模糊查询方法// MtypeService接口// MtypeServiceImpl实现类@Overridequery.setTypeNameLike("%热门%");本文分享的自定义代码生成器,基于模板驱动 + IO 流替换的核心思想,完美解决了多实体类项目中重复编码的痛点。其核心优势在于轻量级、易扩展、零依赖,无需引入复杂的代码生成框架,仅通过 Java 基础 IO 流即可实现。
2026-01-05 21:17:38
829
原创 MyBatis 逆向工程实用笔记(Spring 整合完整版)
配置generatorConfig.xml→执行逆向工程生成代码→Spring整合MyBatis→封装Service层→测试验证→公共代码抽取优化本文所有代码均经过实测,可直接复制到项目中使用,新手只需修改「数据库连接信息、生成路径、数据库表名」3 处,即可快速上手。多表场景下,通过公共 BaseDao、BaseService 抽取,可大幅减少重复代码,提升项目可维护性。
2026-01-05 21:17:25
915
原创 MyBatis 缓存深度解析(一级 / 二级缓存原理 + 实战 + 避坑)
缓存是将频繁访问的数据临时存储在内存中的机制减少数据库磁盘 IO 次数,降低数据库压力;内存读写速度远高于磁盘,提升查询响应效率(毫秒级→微秒级)。一级缓存是SqlSession 对象级别的本地缓存SqlSession 内部维护一个Map集合(Key:缓存标识;Value:查询结果),存储当前会话的查询数据;一级缓存生命周期与 SqlSession 完全绑定:SqlSession 创建则缓存生效,关闭 / 清空则缓存失效;缓存数据以对象引用形式存储(非序列化),读取性能极高。二级缓存是。
2026-01-05 20:38:35
780
原创 MyBatis 延迟加载策略全解析(原理 + 实战 + 避坑)
延迟加载(懒加载):查询主数据时,关联的从数据不会立即查询,只有当程序真正使用到从数据时,才触发对应的 SQL 查询。立即加载:查询主数据时,一次性把主数据和关联的从数据全部查询出来(通常通过多表 JOIN 实现)。// 关联用户ID// 多对一关联用户@Override'}';多对一(Account→User):建议立即加载,符合业务直觉且减少 SQL 次数;一对多(User→Account):建议延迟加载,避免查询无用关联数据;
2025-12-19 11:12:38
929
原创 详解 Gitee/GitHub 中 HTTPS/SSH 方式数据库仓库创建与本地连接
在协同开发与代码托管场景中,Gitee 和 GitHub 作为主流平台,不仅支持代码仓库管理,也常被用于数据库脚本、配置文件的版本控制与团队共享。本文将分四大模块,详细讲解在两大平台中分别通过 HTTPS 和 SSH 方式创建数据库相关仓库、配置权限,并实现本地连接与同步的完整流程,帮助开发者高效管理数据库相关资源。
2025-12-12 23:25:53
1149
原创 MyBatis 多表查询全攻略(一对多 / 多对一 / 多对多)
MyBatis 多表查询的核心是通过(单对象)和collection(集合)标签实现关联数据封装,关键要注意字段别名主键映射连接类型选择三大要点。掌握本文的设计逻辑、配置方法和避坑技巧,可轻松应对生产中绝大多数多表查询场景。
2025-12-09 18:23:08
1044
原创 MyBatis 连接池 + 动态 SQL 全解析(原理 + 实战 + 调优)
MyBatis 连接池的核心是「复用连接提升性能」,生产优先选 POOLED 或整合 Druid;动态 SQL 的核心是「灵活拼接 SQL」,掌握的原理和避坑技巧,结合提升代码复用性。本文覆盖「原理 - 配置 - 实战 - 调优 - 避坑」全维度,可直接落地到生产项目。
2025-12-06 17:33:16
1041
原创 MyBatis 核心配置文件 SqlMapConfig.xml 全解析
是 MyBatis 的全局配置入口,所有影响框架运行的核心参数都在这里定义。管理数据库连接(多环境适配);简化类名书写(类型别名);加载 SQL 映射文件(Mapper.xml);控制全局行为(日志、缓存、驼峰映射等)。properties→settings→→→→plugins→→mappers在实体类上用@Alias// 自定义别名,优先级高于包扫描默认规则// 字段+getter/setter使用示例</select>properties:外部化管理数据库配置,适配多环境;
2025-12-06 17:05:39
960
原创 MyBatis 参数处理全解析:parameterType 与结果映射核心实战
指定 Mapper 接口方法入参类型,框架基于此完成「Java 参数→SQL 参数」的自动转换(底层由 TypeHandler 类型处理器支撑);resultTyperesultMap:定义 SQL 查询结果与 Java 对象的映射规则,前者适用于简单场景,后者支持复杂嵌套映射。注:MyBatis 3.4.0 + 可省略,框架会自动推断参数类型,但显式声明可提升代码可读性。解决「数据库列名≠POJO 属性名」的映射问题,支持复杂嵌套(一对一、一对多),是 MyBatis 结果映射的核心。
2025-11-30 09:54:55
864
原创 MyBatis 代理 Dao 方式的 CRUD 操作全解析
代理 Dao 方式是 MyBatis 的核心开发模式,通过 “接口 + 映射文件” 的方式简化了 Dao 层开发,无需手动实现接口。本文从项目搭建、核心代码编写到关键知识点解析,完整覆盖了 CRUD 操作的实现流程,重点区分了#{}与${}的使用场景,同时强调了事务提交、自增 ID 获取等核心细节。掌握这些内容,可高效实现 MyBatis 的数据库操作,规避常见问题与安全风险。
2025-11-29 22:03:11
740
原创 MyBatis 框架概述与入门实战
1.环境准备:创建数据库表,搭建 Maven 工程并引入核心依赖;2.实体层:编写与数据库表对应的 Java 实体类;3.持久层:定义 Mapper 接口(数据操作方法) + Mapper.xml 映射文件(绑定 SQL);4.核心配置:编写 SqlMapConfig.xml,配置数据库环境、加载映射文件;5.测试执行加载核心配置文件,创建 SqlSessionFactory 工厂;通过工厂获取 SqlSession 对象;获取 Mapper 接口代理对象(或直接通过 SqlSession 调用)
2025-11-29 15:41:33
517
原创 SpringMVC 拦截器全解析:原理、实战与避坑指南
SpringMVC 独有的拦截机制,基于 AOP 思想(动态代理)实现,可在 Controller 方法执行前、执行后、视图渲染后插入自定义逻辑,是解耦通用功能(如登录校验)与业务逻辑的关键组件。自定义拦截器需实现接口(重写 3 个核心方法),并通过配置注册生效。/*** 自定义拦截器(核心)* 3个方法可按需重写,无需全部实现*//*** 1. 预处理方法(核心):Controller 执行前调用。
2025-11-29 12:59:15
736
原创 SpringMVC 响应数据和结果视图:从环境搭建到实战全解析
业务场景推荐返回值类型关键技术点简单页面跳转(无数据传递)String逻辑视图名 + 视图解析器页面跳转需传递数据存数据手动处理响应(如直接输出文本)void页面跳转(转发 / 重定向)String(带 forward:/redirect:)不经过视图解析器,绝对路径跳转前后端分离异步交互Java 对象(配合 @ResponseBody)@RequestBody 接收 JSON,Jackson 转换。
2025-11-28 23:15:11
1046
原创 SpringMVC 异常处理:从原理到实战(附完整代码与避坑指南)
自定义异常类的核心作用是区分「业务异常」和「系统异常」,便于针对性返回提示(如 “用户名已存在” 属于业务异常,“空指针” 属于系统异常)。/*** 自定义业务异常类(受检异常)* 说明:继承 Exception → 受检异常(强制调用者处理);若继承 RuntimeException → 非受检异常(自动传播)*/// 错误提示消息// 必须提供带参构造方法(用于传递错误信息)// 重写 getMessage() 方法(页面/接口通过该方法获取错误信息)@Override。
2025-11-24 23:25:19
1237
原创 SpringMVC 框架从入门到实践:架构解析与案例实现
SpringMVC 是 Spring 框架的 Web 模块核心,是基于 Java 的 MVC 设计模式的请求驱动型轻量级 Web 框架,现已完全融合到 Spring 生态中,成为 Java Web 开发的主流选择。理论基础:三层架构是 B/S 应用的骨架,MVC 是表现层的设计模式,二者共同支撑解耦;框架定位:SpringMVC 是表现层主流框架,性能优于 Struts2,且与 Spring 生态无缝集成;实践流程。
2025-11-24 23:07:11
1022
原创 Java 文件上传四大核心方案全解析(附完整代码 + 选型指南)
快速开发 / 单体应用:优先选「SpringMVC 本地上传」,开发效率最高,成本最低;分布式 / 高并发 / 免维护:选「阿里云 OSS 云存储」,无需关注存储细节,扩展性最强;轻量项目 / 学习原理:选「原生 Servlet 上传」,无框架依赖,底层逻辑清晰;中型系统 / 资源分离:选「Jersey 分离上传」,平衡性能与维护成本,适合静态资源集中管理。根据项目规模、并发量、维护成本选择合适方案,同时结合优化建议避坑,可确保文件上传功能稳定、高效、安全。
2025-11-23 01:29:36
1050
原创 JDBC 入门详解(附工具类与防 SQL 注入)
JDBC 是 Java 操作数据库的 “基础核心技术”,掌握它不仅能完成简单的数据库交互,更是学习 MyBatis、Spring JDBC 等框架的前提。版本适配:MySQL 5 与 8 的驱动类、URL 参数差异是关键,需重点区分。核心流程:“加载驱动→获取连接→执行 SQL→处理结果→释放资源” 五步是不变的核心,其中 “释放资源” 和 “用 PreparedStatement 防注入” 是必须遵守的规范。工具类封装:通过配置文件 + 工具类减少重复代码,是实际开发的必备技巧。
2025-11-15 14:15:41
670
原创 博客二:Spring 框架入门(下):AOP 实战 + 事务管理,从原理到落地
System.out.println("日志:创建订单方法开始执行");// 重复代码try {System.out.println("业务:创建订单");System.out.println("日志:创建订单方法执行成功");// 重复代码System.out.println("日志:创建订单方法执行失败");// 重复代码System.out.println("日志:更新订单方法开始执行");// 重复代码try {System.out.println("业务:更新订单");
2025-11-09 10:43:56
791
原创 Spring 框架入门(上):从 0 理解 IOC 与 DI,附完整实战案例
以前我们写代码,要手动new// Dao层@OverrideSystem.out.println("查询用户数据");// Service层// 手动new Dao对象,耦合度极高!@Override耦合度高:Service 和 Dao 强绑定,如果后期要换 Dao 实现类(比如从 MySQL 换成 Oracle),必须修改 Service 代码;对象管理乱:项目大了,成百上千个对象要手动创建,还得处理对象间的依赖关系,维护成本极高。IOC 是思想。
2025-11-09 09:45:53
856
原创 Java 代理模式全解析:静态代理、JDK 动态代理与 CGLIB 代理实战
*** 用户服务接口:静态代理需基于接口(或父类)实现*/// 添加用户// 删除用户// 查询用户/*** 无接口的目标类:CGLIB可直接代理类(无需接口)*/// 非final方法(可被代理)System.out.println("【核心业务】创建订单成功:" + orderNo);// final方法(无法被代理)System.out.println("【核心业务】取消订单成功:" + orderNo);// 私有方法(无法被代理)
2025-11-08 23:10:22
1009
原创 深入理解事务与数据库连接池:从理论到实践
事务是数据库提供的一种特性,它将一组数据操作组成一个不可分割的执行单元,这组操作要么全部成功执行,要么全部执行失败,以此确保数据的完整性。第一步:从冠希的账户中扣除 1000 元;第二步:向美美的账户中增加 1000 元。这两个步骤必须作为一个事务执行,如果第一步成功但第二步失败,就会导致冠希的钱被扣除却未到美美账户,数据出现错误;反之亦然。只有通过事务,才能保证这两个步骤要么都完成,要么都不完成,避免数据不一致的问题。在传统的 JDBC 开发中,每次操作数据库都需要手动创建Connection。
2025-11-07 19:20:09
689
原创 IntelliJ IDEA 四种项目构建:从普通 Java 到 Maven Web 项目
项目类型核心优势适用场景普通 Java 项目轻量、无依赖工具类开发、代码片段验证Tomcat Web 项目直观理解 Web 底层结构初学者学习 Java Web 基础Maven 项目依赖管理自动化、多模块支持中大型 Java 项目、非 Web 后端服务(如微服务)Maven Web 项目依赖管理 + Web 工程化企业级 Java Web 应用、前后端不分离的 Web 项目掌握这四种项目的构建方式,能让你在不同开发场景中灵活切换,充分发挥 IntelliJ IDEA 的强大能力。
2025-10-26 09:55:25
1155
1
原创 数据库技术指南(二):MySQL CURD 与高级查询实战
本文系统讲解了 MySQL 的 CURD 操作和高级查询技巧,从 “数据创建” 到 “数据分析”,覆盖了所有业务场景的需求。掌握这些技能,你能在数据库实战中既保证操作的正确性,又兼顾性能与安全。结合上一篇的 “数据库基础与 MySQL 核心特性”,你已构建起完整的数据库知识体系。后续可深入学习 “数据库索引优化”“事务与锁机制” 等进阶内容,进一步提升数据库管理能力。
2025-10-24 17:57:32
583
原创 数据库技术指南(一):从基础概念到 MySQL 核心实践
数据库(Database,DB)是按照特定结构组织、存储和管理数据的集合。它不仅是数据的 “容器”,更提供了数据的增删改查、事务控制、权限管理等一系列核心功能。数据存储:将零散的业务数据结构化存储,避免丢失或冗余。数据共享:支持多用户、多应用同时访问,是系统 “数据互通” 的核心。数据安全:通过权限、事务等机制,保证数据的一致性、完整性和保密性。作用:定义数据库对象(数据库、表、索引、视图等)的结构。CREATE:创建对象-- 创建数据库-- 创建表ALTER:修改对象结构。
2025-10-24 17:50:32
862
原创 JSON:从基础到 FastJSON 与 JS 操作全解析
JSON 由 Douglas Crockford 在 2001 年提出,其设计初衷是为简化数据交换。它基于 JavaScript 的对象字面量语法,但剥离了 JavaScript 的执行逻辑,仅保留数据描述能力,因此能被几乎所有编程语言解析。核心优势「轻量性」:相比 XML,JSON 语法更简洁,传输 / 存储成本更低;「易读性」:人类可直接理解其结构,便于调试;「跨语言」:Python、Java、C#、Go 等主流语言都有成熟的解析库。定义一个包含复杂属性的实体类Product。
2025-10-24 14:13:06
1020
原创 面试JAVASE基础(八)——Java多线程
线程是操作系统进行CPU 调度的最小单位,它是进程内的一个执行路径。main线程(主线程)、GC 线程(垃圾回收)、异常处理线程。Java 多线程是一门 “知易行难” 的技术,从基础的线程创建到复杂的并发控制,每个环节都需要结合实战不断打磨。
2025-10-23 10:49:09
243
原创 面试JAVASE基础(七)——Java 异常体系与处理方式
程序的正常执行流程是 “线性的”,但在运行时可能遇到预想不到的情况(如文件不存在、网络中断、参数非法等),这些情况会打破正常流程,这就是异常。举个生活中的例子:你计划 “起床→刷牙→吃早餐→上班”,但如果 “牙刷坏了”(异常),就需要调整流程(换牙刷或出门买牙刷),否则 “上班” 这个流程就会被中断。在 Java 中,异常是通过对象来表示的,所有异常类都继承自。开发者根据业务需求自定义的异常类,需继承Exception(编译期异常)或(运行时异常)。示例:定义一个 “用户未找到” 的业务异常。
2025-10-22 14:48:16
887
原创 面试JAVASE基础(六)——Java IO 流
IO 流(Input/Output Stream)本质是数据的有序传输序列输入流(Input Stream):数据从外部载体流入程序内存,是 “读” 操作的载体;输出流(Output Stream):数据从程序内存流出到外部载体,是 “写” 操作的载体;流的方向性:IO 流是单向的 —— 输入流只能读、输出流只能写,不存在 “双向流”(需双向传输时需分别创建输入 / 输出流)。这两个类通过抽象方法定义了字节流的核心行为,子类需根据具体场景(文件、内存、网络)实现这些方法。
2025-10-21 23:11:58
1129
原创 面试JAVASE基础(五)——Java 集合体系
Java 集合体系是 Java 编程的核心基石之一,掌握Collection和Map的各类实现类的特性、用法和适用场景,能让你在数据处理场景中如鱼得水。从ArrayList的数组高效查询,到LinkedList的链表灵活增删;从HashMap的哈希表极速映射,到TreeMap的红黑树有序排列,每一种集合都有其独特价值。
2025-10-21 22:29:02
1011
原创 面试JAVASE基础(四)——Java 八大包装类、String 、日期类及文件操作核心类 File全解析
在 Java 编程世界里,有许多核心类在数据处理、文件操作等场景中扮演着关键角色。下面我们将详细介绍八大包装类、String及日期类,还有文件操作核心类File,帮助大家全方位掌握这些重要工具。
2025-10-21 17:16:28
957
原创 面试JAVASE基础(三)——Java 面向对象
( “has - a” :表示的是一个类包含另一个类的对象,也被称为组合关系或聚合关系,体现了类与类之间的包含关系,描述了一个对象拥有另一个对象。通过类来定义对象的模板,类是对象的蓝图,对象是类的实例。(“is - a” :继承关系,它体现的是一种类与类之间的从属、派生关系,表示一个类是另一个类的一种,是对现实世界中 “属于” 关系的抽象。向上转型后,只能调用父类中定义的方法,若子类重写了父类方法,则调用子类的重写方法。匿名内部类是一种特殊的局部内部类,没有类名,通常用于创建只需要使用一次的类的实例。
2025-10-21 11:23:26
579
原创 面试JAVASE基础(二)——流程、方法与数组深入
在上集我们初步了解了 Java 的语法基础与数据类型,这一集将深入讲解程序流程控制、函数(方法)以及数组,帮助你更全面地掌握 Java 语法。
2025-10-20 22:22:57
596
原创 面试JAVASE基础(一)——Java 数据类型和语法基础
Java 语法是 Java 编程的根基,掌握好 Java 语法基础,能为后续深入学习 Java 编程打下坚实的基础。本文将围绕 Java 语法基础的各个核心模块展开讲解,帮助你全面理解 Java 语法的核心要点。
2025-10-19 16:02:12
679
原创 Java List 集合详解(ArrayList、LinkedList、Vector)
特性ArrayListLinkedListVector底层结构动态数组(Object[])双向链表动态数组(Object[])访问速度快(O(1) 按索引访问)慢(O(n) 按索引访问)快(O(1) 按索引访问)插入/删除慢(中间插入需要移动元素)快(只需修改节点指针)慢(同 ArrayList)线程安全否(需手动加锁)否(需手动加锁)是(所有方法都有 synchronized)内存占用较低(仅存储数据)较高(需额外存储前驱/后继指针)较低(仅存储数据)适用场景大量读、少量改;
2025-08-14 22:40:49
1071
原创 HTTP 请求转发与重定向详解及其应用(含 Java 示例)
请求转发是服务器内部的一种操作方式,它允许服务器将客户端请求在服务器内部转发给另一个资源(如 JSP 或 Servlet)进行处理,而客户端对转发行为是“不可见”的。简单理解:用户发送请求 → 服务器内部转发 → 返回最终响应给用户(URL 不变)重定向是服务器向客户端发送一个新的 URL,让浏览器再次发起请求。浏览器地址栏会发生变化。简单理解:用户发送请求 → 服务器返回 302 状态码和新 URL → 浏览器重新请求新 URL → 返回响应请求转发。
2025-08-13 22:24:21
1134
原创 深入理解 Cookie 与 Session —— Web 状态保持详解与实战
原理:攻击者在客户端或通过响应头写入相同名称的 Cookie,从而覆盖原有 Cookie 内容,导致身份被冒用或数据被篡改。场景同一域名下的不同子域篡改 Cookie。恶意响应头设置同名 Cookie 覆盖原值。防护措施为 Cookie 设置明确的Domain和Path限制作用范围。对 Cookie 值进行签名和验证,防止篡改。原理:攻击者提前获取或制造一个合法的 Session ID,然后诱导受害者使用该 Session ID。
2025-08-13 21:12:42
1074
ToDoList小练习参考代码
2025-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅