- 博客(309)
- 收藏
- 关注
原创 手写MyBatis第62弹:Executor如何优雅委托StatementHandler
摘要:MyBatis核心架构中,Executor与StatementHandler的分工协作是关键。Executor负责事务管理、缓存处理和高层调度,而StatementHandler专注于SQL语句的具体执行。文章详细解析了doQuery和doUpdate方法的实现机制,包括Statement准备、异常处理和性能优化策略。同时探讨了插件扩展机制和自定义执行器实现,展示了MyBatis优秀的责任链和委托模式设计。这种清晰的职责分离使框架具有高度可扩展性,为开发者提供了强大的数据访问层解决方案。
2025-09-17 07:45:00
727
原创 手写MyBatis第63弹:MyBatis SQL日志插件完整实现:专业级SQL监控与调试方案
摘要:本文深入探讨了如何实现一个完整的MyBatis SQL日志插件,从基础功能到高级特性进行全方位解析。重点介绍了插件拦截点选择、SQL执行上下文管理、参数格式化与安全处理等核心实现方案。文章还阐述了分离输出Preparing和Parameters的设计哲学,并提供了生产环境配置建议。该插件支持执行时间监控、慢SQL告警、动态日志级别控制等高级功能,同时确保敏感数据脱敏,满足企业级应用的安全性和性能需求。通过这一专业级SQL监控方案,开发者可以更高效地进行调试和性能优化。
2025-09-17 00:05:29
437
原创 手写MyBatis第61弹:执行器引擎揭秘:StatementHandler的设计哲学与实现原理
《MyBatis StatementHandler核心机制深度解析》 本文系统剖析了MyBatis框架中StatementHandler的核心设计,重点解读了PreparedStatementHandler的实现原理与性能优势。文章通过对比三种StatementHandler(Simple/Prepared/Callable)的适用场景,揭示预编译语句在数据库性能优化(执行计划缓存、批量操作)和SQL注入防护方面的双重价值。深入讲解了RoutingStatementHandler的动态路由机制,以及参数化查
2025-09-15 23:19:30
834
原创 手写MyBatis第60弹: 如何优雅处理各种参数类型,从ParamNameResolver到TypeHandler
MyBatis参数处理器全解析:揭秘PreparedStatement参数绑定的魔法 本文深入剖析了MyBatis框架中ParameterHandler的核心机制,包括参数解析、类型转换和参数绑定三大核心职责。重点解析了DefaultParameterHandler的实现细节,涵盖基本类型、Map、@Param注解参数和复杂POJO等多种参数类型的处理策略。同时揭示了ParamNameResolver的解析机制和TypeHandler的类型转换原理,并提供了性能优化、异常处理和自定义扩展的实用建议。通过理解
2025-09-15 23:10:28
586
原创 手写MyBatis第59弹:MyBatis与SLF4J完美集成:打造专业级日志系统
【MyBatis日志系统升级指南】本文详细介绍如何将MyBatis从System.out日志升级到专业SLF4J框架。内容涵盖:1)System.out的6大弊端;2)SLF4J门面模式优势;3)Maven/Gradle依赖配置;4)日志工具类实现;5)Logback高级配置(滚动日志、异步日志);6)MyBatis内置集成原理;7)多环境配置策略;8)5项性能优化建议;9)常见问题解决方案。通过参数化日志、级别控制和灵活输出,构建高效可维护的日志系统,提升项目专业性。
2025-09-14 23:59:03
603
原创 基于Springboot + vue实现的农场投入品运营线上管理系统
订单管理:查看已发货、未支付、已取消、已支付、已退款、已完成订单,查看月营业额、商品销量、首页总数、首页统计,发货,查看物流。订单管理:查看已发货、未支付、已取消、已支付、已退款、已完成订单,确认收货,查看物流。农资企业管理:新增、查看、修改、删除、审核农资企业,查看评论。农业资讯管理:新增、查看、修改、删除农业资讯,查看评论。生资商品管理:新增、查看、修改、删除生资商品,查看评论。购物车管理:新增、查看、修改、删除购物车。购物车管理:新增、查看、修改、删除购物车。地址管理:新增、查看、修改、删除地址。
2025-09-13 00:01:02
126
原创 基于Springboot + vue实现的《计算机基础》网上考试系统
摘要:在线考试系统基于SpringBoot+Vue开发,包含管理员、学生和教师三种角色。管理员可管理用户、配置、权限、新闻、公告及考试内容;学生可参加考试、查看记录;教师可管理试卷试题、批改试卷。系统采用JDK1.8+MySQL5.7等技术栈,提供完整源码及搭建教程。文末附免费获取链接,包含无删减项目资源和配套视频教程。(149字)
2025-09-13 00:00:19
386
原创 基于Springboot + vue3实现的校园二手交易平台
【摘要】本系统基于SpringBoot+Vue3+ElementUI技术栈开发,包含管理员和用户双角色功能模块。管理员端具备用户管理、权限配置、订单处理(6种状态)、商品全生命周期管理(信息/类型/评论)、轮播图管理等功能;用户端支持订单跟踪、地址管理、购物车操作、商品收藏及浏览。系统采用JDK1.8+MySQL5.7+Node.js14环境,配套微信小程序端,提供完整的电商解决方案。开发者强调开源共享精神,呼吁用户通过点赞、收藏、留言等方式支持创作,并附有项目截图和技术文档说明。(149字)
2025-09-11 23:52:06
458
原创 基于Springboot + vue3实现的在线智慧考公系统
本文介绍了一个基于SpringBoot+Vue3的在线考试系统,包含管理员、教师和用户三种角色。管理员负责用户管理、系统配置、权限管理和公告发布;教师可进行成绩分析、试卷管理、申论测试评分和学习资源管理;用户可以查看考公资源、岗位信息,参加考试和提交咨询。系统采用JDK1.8+MySQL5.7技术栈,包含完整源码和搭建教程。文末提供百度网盘和夸克网盘的免费下载链接(提取码6666/WR6M),以及相关教学视频,欢迎点赞收藏支持开发者。
2025-09-11 23:49:23
332
原创 基于Springboot + vue实现的高校大学生竞赛项目管理系统
【摘要】本文介绍了一个基于SpringBoot+Vue的竞赛管理系统,包含管理员、学生和评委三种角色。管理员负责用户管理、系统配置和权限分配;学生可进行项目报名、个人信息和获奖情况管理;评委则负责项目评审和成绩登记。系统采用JDK1.8+MySQL5.7+Tomcat8技术栈,前端使用Vue2+ElementUI。文末提供往期源码免费下载链接(含搭建教程),包括在线考试系统等资源,支持一键获取无套路。欢迎读者点赞收藏留言互动,共同探讨技术细节。
2025-09-10 23:22:27
391
原创 手写MyBatis第58弹:如何优雅输出可执行的SQL语句--深入理解MyBatis日志机制:
本文深入解析MyBatis中SQL日志输出的实现与优化。从基础实现(仅输出带占位符的SQL),到带参数值的完整SQL输出(需注意SQL注入风险),再到基于插件机制的优雅实现方案。文章还介绍了高级功能如执行时间监控、SQL格式化、敏感数据脱敏等,并推荐集成SLF4J等日志框架。最后给出生产环境最佳实践:性能优化、日志级别控制、敏感信息保护等注意事项,帮助开发者构建安全高效的SQL日志系统。
2025-09-10 23:16:33
1092
原创 基于Springboot + vue实现的乡村生活垃圾治理问题中运输地图
【摘要】本文介绍了一个基于SpringBoot2+Vue2的智能垃圾管理系统,包含管理员和用户双角色功能模块。管理员可进行用户管理、权限配置、垃圾投放点/运输车辆管理等;用户可查看垃圾资讯和投放点信息。系统采用JDK1.8+MySQL5.7等技术栈,具有完整的权限管理和数据维护功能。作者在文末以趣味打油诗形式呼吁读者点赞关注,强调知识整理不易,开源项目需要支持。全文在150字内完整呈现了系统架构、技术特点和互动倡议。
2025-09-09 23:16:33
1486
4
原创 手写MyBatis第57弹:MyBatis结果处理器设计原理:如何优雅处理数据库查询结果
本文深入解析MyBatis结果处理器(ResultSetHandler)的设计原理与实现机制,重点剖析了其核心功能:将JDBC的ResultSet转换为Java对象。文章详细介绍了DefaultResultSetHandler的实现过程,包括自动映射与ResultMap显式映射的区别、嵌套查询与延迟加载的实现原理,以及不同类型结果(单个对象、列表、Map)的处理方式。同时提供了性能优化建议,如合理使用自动映射、避免N+1查询等,并介绍了自定义结果处理器的扩展方法。通过理解结果处理器的工作原理,开发者可以更高
2025-09-09 22:47:28
1054
原创 基于Springboot + vue3实现的小区物业管理系统
【摘要】本系统为基于SpringBoot+Vue3的智慧社区管理平台,包含管理员和用户双角色功能模块。管理员端涵盖用户管理、房屋/车辆/车位信息维护、维修投诉审核等15项核心功能;用户端支持房屋/车辆自助管理、在线报修投诉、费用缴纳等便民服务。采用JDK1.8+MySQL5.7技术栈,集成ElementUI+Node.js14开发,提供完整源码及搭建教程。文末附赠往期项目资源(含宠物商城系统),开发者可免费获取无删减源码包(百度网盘/Quark链接)。系统界面简洁高效,支持人脸识别等智能化功能,适合作为全栈
2025-09-08 23:15:28
469
原创 手写MyBatis第56弹:动态代理与责任链的完美结合MyBatis插件架构
MyBatis插件机制深度解析:从原理到实战应用 本文深入剖析了MyBatis强大的插件机制实现原理。插件机制基于动态代理和责任链模式,通过Interceptor接口实现对四大核心组件的非侵入式扩展。文章详细解析了InterceptorChain、Plugin等核心组件的工作原理,展示了插件从配置到执行的完整流程,并提供了性能监控插件的开发实例。同时总结了插件开发中的性能优化、线程安全等注意事项,以及分页、数据权限等典型应用场景。MyBatis插件机制巧妙结合了设计模式,为框架功能扩展提供了灵活高效的解决方
2025-09-08 23:12:29
1499
原创 基于Springboot + vue3实现的汽车美容与保养网站
【摘要】🎯 本项目为基于SpringBoot+Vue3的汽车服务管理系统,包含管理员、用户、商家三类角色。核心功能包括:管理员可进行全平台数据管理;用户可预约保养、管理订单及收藏;商家可发布资讯、处理预约及订单。技术栈采用SpringBoot+Vue3+ElementUI,支持JDK1.8+MySQL5.7+环境。文末提供无套路源码下载(含搭建教程),包含往期宠物商城等开源项目资源。🔥 特色:完整前后端分离架构+多角色权限控制+可视化数据统计,适合二次开发学习。(注:摘要已精简至150字内)
2025-09-07 23:09:46
339
原创 手写MyBatis第55弹:动态代理拦截器 @Signature注解到精准拦截的实现原理
本文深入解析MyBatis插件机制,重点探讨如何通过@Signature注解实现精准拦截。文章首先介绍MyBatis插件的四大核心拦截目标,然后通过手写简化版Plugin类,详细剖析其方法匹配机制。核心在于signatureMap的缓存结构和严格匹配条件(类、方法名、参数类型必须完全一致)。针对常见的误拦截问题(如分页插件误拦截非SELECT语句),提出在intercept方法内进行二次判断的解决方案,包括如何通过MetaObject获取MappedStatement检查SQL类型。文章最后总结两级过滤机制
2025-09-07 23:06:31
820
原创 手写MyBatis第54弹: @Intercepts与@Signature的读取与缓存策略
本文深入解析MyBatis拦截器注解机制,重点探讨了@Intercepts和@Signature注解的解析过程与优化策略。文章从注解解析的核心价值出发,分析了MyBatis采用的折中解析时机选择(在插件实例化后、首次包装前解析),详细介绍了注解解析的具体流程和缓存机制设计。为提升性能,MyBatis使用两级缓存结构(拦截器到签名映射缓存和类到接口缓存)和线程安全策略,并提供了减少反射调用、优化数据结构等实用技巧。通过实际应用案例和常见问题解决方案,帮助开发者深入理解MyBatis拦截器内部工作机制,实现高效
2025-09-06 23:24:24
693
原创 手写MyBatis第53弹: @Intercepts与@Signature注解的工作原理
本文深入解析MyBatis插件机制中的@Intercepts和@Signature注解,阐述其作为方法拦截导航系统的重要作用。文章从注解定义、工作原理到实战应用展开,重点解答了args属性在方法重载匹配中的必要性,并提供了SQL执行统计、参数加密等插件开发示例。同时给出多方法拦截策略和性能优化建议,最后总结开发高效稳定插件的关键要点,包括精确方法签名匹配和遵循最佳实践等。通过这两个注解的深度应用,可有效扩展MyBatis的能力边界。
2025-09-06 23:13:26
852
原创 手写MyBatis第52弹:MyBatis分页插件如何正确识别SELECT语句
摘要: 本文探讨MyBatis分页插件拦截增删改操作导致的SQL语法错误问题。通过分析发现,插件未区分SQL类型(SELECT/INSERT/UPDATE/DELETE)是核心原因。解决方案利用MappedStatement的SqlCommandType属性,确保仅拦截SELECT语句。文章深入解析了MappedStatement的关键作用,提出改进的intercept方法,并扩展了基于方法名、注解和SQL内容的精细化拦截策略。实践建议强调明确拦截范围、配置灵活性和性能监控,为开发健壮的MyBatis插件提
2025-09-05 22:33:45
1551
原创 手写MyBatis第51弹:深入解析MyBatis分页插件原理与手写实现
本文详细介绍了如何手写一个MyBatis分页插件。首先分析了MyBatis的插件机制,说明其基于Java动态代理实现,可拦截四大核心组件的方法。重点讲解了分页插件的核心原理:拦截SQL执行、分析分页需求、改写SQL语句并设置分页参数。随后通过五个步骤实现基础分页功能:定义拦截器注解、实现intercept方法、构建分页SQL、设置分页参数及注册插件。文章还指出了简易实现的局限性,并与成熟的PageHelper插件进行对比,最后解释了选择拦截prepare方法的原因。通过本文,读者不仅能实现基础分页功能,还能
2025-09-05 22:26:21
843
原创 基于Springboot + vue3实现的学校学报出版发行管理系统
【摘要】该系统为投稿管理平台,采用SpringBoot+Vue3技术栈,包含管理员和用户双角色功能模块。管理员可进行用户管理、稿件分类、新闻资讯、投稿审核(含评论查看与数据统计)、轮播图和出版计划等全流程管理。用户端支持投稿操作、出版计划查看及个人信息维护。项目运行需JDK1.8+MySQL5.7+IDEA/VSCode环境,提供完整源码(含搭建教程)和项目截图。文末附往期免费资源链接(含在线考试系统等),强调"无删减无套路"获取方式。
2025-09-04 23:59:24
237
原创 基于Springboot + vue3实现的时尚美妆电商网站
【摘要】基于SpringBoot+Vue3的电商系统,包含管理员与用户双角色功能模块。管理员端支持商品分类、用户、订单等全流程管理(增删改查+状态操作);用户端提供购物车、收藏夹、订单跟踪等核心功能。系统采用JDK1.8+MySQL5.7技术栈,集成ElementUI框架,文末附免费源码获取链接(含搭建教程)。特色功能包括轮播图管理、多状态订单处理及商品评论系统,开发者提供完整项目截图与技术答疑支持。
2025-09-04 23:56:49
310
原创 手写MyBatis第50弹:责任链模式在Executor包装中的精妙设计
摘要:本文深入解析MyBatis责任链插件机制,重点剖析其对Executor、StatementHandler等四大核心组件的智能包装过程。文章从Configuration配置中心出发,详细讲解InterceptorChain.pluginAll()方法实现的多层代理构建逻辑,揭示插件生效时机与执行顺序的底层原理。通过SQL执行监控、自动分页等实战案例,展示该机制在功能扩展中的应用价值,并提供性能优化策略与常见问题解决方案,最后总结MyBatis插件架构在解耦设计、灵活扩展方面的精妙之处。
2025-09-03 16:30:00
1768
原创 手写MyBatis第49弹:责任链模式在高并发场景下的优化实践
摘要:本文深入解析了MyBatis插件架构中的责任链模式,重点介绍了其核心组件(InterceptorChain、Interceptor和Invocation)的协作机制。文章详细阐述了责任链模式在MyBatis中的执行流程、优势(解耦性、动态性等),并探讨了不调用proceed()的后果及性能优化策略。通过分布式链路追踪和多租户数据隔离等实战案例,展示了责任链模式的实际应用价值。最后提供了拦截器使用的最佳实践建议,帮助开发者构建灵活高效的系统架构。(149字)
2025-09-03 14:30:00
1180
原创 手写MyBatis第48弹:手写MyBatis插件机制与链式调用优化实践
本文深入解析MyBatis插件机制,从源码层面剖析其实现原理。主要内容包括:1)插件机制基于责任链模式,通过动态代理在四大核心组件方法前后插入逻辑;2)详细讲解@Intercepts和@Signature注解的拦截规则定义;3)重点分析Plugin.wrap()方法的代理创建过程;4)揭示链式调用优化机制,通过Invocation实现多插件协同工作;5)探讨防止错误拦截的关键设计和性能优化实践;6)列举SQL监控、分页处理等典型应用场景。文章通过手写实现完整Plugin工具类,帮助开发者深入理解MyBati
2025-09-03 10:09:52
731
原创 手写MyBatis第47弹:Interceptor接口设计与Invocation上下文传递机制--MyBatis动态代理生成与方法拦截的精妙实现
摘要:本文深入解析MyBatis插件系统的链式调用机制,重点剖析Interceptor接口设计、Invocation上下文封装和proceed()递归调用原理。通过分析Plugin.wrap动态代理生成过程,揭示插件如何修改参数和返回值。文章总结了MyBatis插件系统遵循的开闭原则、单一职责等设计哲学,为构建可扩展架构提供了优秀范例。(137字)
2025-09-01 23:52:13
1129
原创 手写MyBatis第46弹:多插件责任链模式的实现原理与执行顺序奥秘--MyBatis插件架构深度解析
摘要:本文深入解析MyBatis多插件系统的责任链模式实现原理,重点探讨InterceptorChain设计与插件执行顺序机制。通过分析插件嵌套代理的创建过程,揭示"后配置先执行"的内在逻辑,并以动态代理技术实现多插件协同工作。文章详细阐述了配置与运行时阶段的工作流程,以及Plugin.wrap方法的核心作用,展示了MyBatis如何通过责任链模式实现插件系统的灵活扩展和解耦设计,为框架使用者提供深度定制能力。(149字)
2025-09-01 23:39:48
975
原创 手写MyBatis第45弹:动态代理在MyBatis插件内核是如何织入扩展逻辑的
MyBatis插件机制通过代理模式实现功能扩展,采用JDK动态代理为Executor等接口创建代理对象。核心类Plugin既是InvocationHandler,又提供代理包装方法wrap(),根据@Intercepts注解决定是否拦截方法。多个插件会形成"代理套代理"的责任链结构,通过Invocation.proceed()实现链式调用。这种设计实现了无侵入式扩展,展现了代理模式与责任链模式的优雅结合,为系统提供了松耦合的可扩展架构。
2025-08-31 17:05:50
800
原创 手写MyBatis第44弹:解密MyBatis四大核心组件拦截之道
摘要:本文深入解析MyBatis插件机制,剖析其四大核心组件(Executor、StatementHandler等)的拦截原理,揭示动态代理与责任链模式的技术实现。文章不仅探讨了日志记录、分页查询等典型应用场景,还提供了插件开发的最佳实践,包括执行顺序控制、防止循环代理等关键问题解决方案,帮助开发者掌握MyBatis扩展能力,实现业务定制化需求。(149字)
2025-08-31 16:57:36
673
原创 手写MyBatis第43弹:插件拦截原理与四大可拦截对象详解
这篇文章深入解析了MyBatis框架的插件机制与架构演进。作者通过手写MyBatis框架的实践,从基础CRUD功能实现到架构优化,详细介绍了四大可拦截对象(Executor、StatementHandler等)及其应用场景。重点阐述了插件机制的核心原理:基于JDK动态代理和责任链模式实现的拦截器系统,展示了如何通过Interceptor接口实现SQL监控、分页等扩展功能。文章体现了MyBatis"开放-封闭"的设计哲学,为理解框架扩展性和架构设计提供了宝贵参考。
2025-08-30 22:06:50
777
原创 手写MyBatis第42弹: Executor重构与StatementHandler职责分离的艺术
本文探讨了MyBatis框架中Executor组件的重构过程。原始SimpleExecutor设计存在职责过重、难以扩展等问题,通过三大关键重构策略实现职责分离:1)将数据库连接管理抽离至Transaction接口,2)引入StatementHandler处理Statement创建与执行,3)严格规范资源关闭机制。重点分析了RoutingStatementHandler的路由模式设计,通过委托机制实现不同Statement类型的透明切换。重构后的架构层次清晰、职责分明,为插件拦截、事务管理等高级特性提供了良
2025-08-30 22:01:33
1031
原创 手写MyBatis第41弹:MyBatis动态代理黑魔法:MapperProxy如何智能处理增删改的返回值?
MyBatis通过MapperProxy的智能返回值适配策略,实现了增删改操作的灵活返回类型。JDBC执行增删改统一返回int型影响行数,而Mapper接口允许void、int、boolean等不同返回类型。在invoke方法中,框架根据方法签名自动转换结果:void忽略返回值,int直接返回行数,boolean转换为是否成功。这种设计体现了API的意图导向性,减少了冗余代码,保持接口简洁。同时通过@Options注解支持获取自增主键,将值回填到参数对象而非方法返回值。这种适配层设计在统一底层实现的同时,提
2025-08-29 16:26:48
698
原创 手写MyBatis第40弹:手写MyBatis框架阶段性总结,你的ORM框架已达生产级雏形
本文回顾了手写MyBatis框架的实现过程,总结了当前框架具备的CRUD功能和两种操作方式:优雅的Mapper代理接口与灵活的SqlSession API。文章详细解析了核心组件(如SqlSessionFactory、Executor等)的职责与协作机制,并展望了未来扩展方向,包括插件机制、缓存优化、事务管理等,旨在打造更强大的生产级ORM框架。通过这一实践,读者不仅能深入理解MyBatis架构,还能掌握Java高级编程技术的综合运用。
2025-08-29 16:22:05
613
原创 手写MyBatis第39弹:深入MyBatis BatchExecutor实现原理与最佳实践
通过对比和的update通过抽象接口,屏蔽了不同执行策略的复杂性,并通过与SqlSession的联动,提供了统一而灵活的用户体验。给开发者的启示:在需要大量写操作的场景(如数据导入、批量更新),务必使用(通过),性能提升可达数十倍甚至更高。批处理操作需要显式调用或才会真正执行。忘记提交是初学者常犯的错误。批处理操作同样受事务控制。在执行commit之前,所有操作都可以回滚。合理设置批处理大小(定期调用),可以避免超大事务导致数据库锁等问题。从到,我们看到的不仅仅是一个功能的添加,更是一个框架在。
2025-08-28 17:26:58
1609
原创 手写MyBatis第38弹:深度剖析MyBatis Executor的update方法,掌握数据库操作底层原理
本文深入解析MyBatis执行器Executor的增删改实现,通过统一update方法抽象共性操作,详细阐述从获取连接、预处理SQL到参数处理和执行返回的完整流程。文章特别探讨了连接管理的设计哲学,指出当前方案在事务支持上的局限性,前瞻性提出引入Transaction接口实现连接生命周期管理,为后续事务功能扩展奠定基础。作者既呈现了技术细节实现,又体现了对架构分层和设计原则的深刻思考,展现了从功能实现到系统设计的进阶之路。
2025-08-28 17:23:04
928
原创 手写MyBatis第37弹: 深入MyBatis MapperProxy:揭秘SQL命令类型与动态方法调用的完美适配
本文深入解析MyBatis核心组件MapperProxy的工作原理,重点探讨其如何动态适配SqlSession的CRUD方法。文章首先回顾MyBatis架构,指出MapperProxy作为连接Mapper接口与数据库操作的桥梁;随后分析SqlSession多样化设计的原因及MapperProxy的动态适配机制,包括SQL命令类型识别、返回类型分析和参数处理;接着介绍高级特性如批量操作和缓存策略;最后通过实战案例展示如何扩展MapperProxy实现性能监控等定制功能。全文旨在帮助开发者深入理解MyBatis
2025-08-27 23:38:05
1105
原创 手写MyBatis第36弹:MyBatis执行流程中SQL命令类型解析
本文深入解析MyBatis框架中SQL命令类型的解析机制,揭示其如何通过XML配置和注解方式确定SQL操作类型(SELECT/INSERT/UPDATE/DELETE),并详细阐述该类型在MappedStatement创建及Executor执行路由中的关键作用。文章从解析原理、源码实现到实际应用,系统性地展示了SQL命令类型如何影响MyBatis的执行决策路径、缓存行为及事务管理,帮助开发者深入理解框架底层工作原理。通过对比XML节点解析与注解解析的异同,结合典型配置示例,为优化MyBatis使用和问题排查
2025-08-27 23:37:59
1460
原创 手写MyBatis第35弹:@Select、@Insert等注解的背后原理
摘要:本文深入解析MyBatis框架中SQL命令类型识别的核心机制,揭示了注解(@Select/@Insert等)和XML配置如何被统一解析为MappedStatement,以及sqlCommandType如何决定执行路由(查询/更新)。文章详细阐述了从解析阶段到执行阶段的全流程,包括类型枚举设计、双路径解析(注解/XML)、MappedStatement构建及执行路由决策,并探讨了"早期绑定"设计思想的优势(性能优化、提前验证等)。最后总结了该机制体现的MyBatis设计哲学:通过静态
2025-08-26 17:10:39
969
原创 ai助力七夕3D相册--会转、会唱、会心动的3D相册
【摘要】本文介绍了一款创意3D互动相册,通过360°可旋转场景、自定义背景音乐和动态爱心粒子效果,将传统平面相册升级为沉浸式爱情纪念载体。该相册支持鼠标拖拽浏览、键盘快捷切换,适用于情人节、婚礼等浪漫场合,旨在用科技手段让珍贵回忆"触手可及"。文末附有B站演示视频链接及互动邀请,作者呼吁读者点赞收藏支持创作,并留下"源码免费"的福利承诺。(149字)
2025-08-26 16:55:26
658
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人