MyBatis延迟加载、缓存机制与注解开发
📅 2026/8/3 15:13:08
👁️ 次浏览
一、延迟加载策略1.1 延迟加载的概念立即加载查询用户时默认也把该用户的所有账户信息查询出来延迟加载查询用户时不查询账户信息等需要使用账户数据时才去查询1.2 应用场景查询账户多对一时可以直接查询用户信息 → 立即加载查询用户一对多时可以先不查账户信息 → 延迟加载1.3 多对一延迟加载配置在 SqlMapConfig.xml 中开启延迟加载settings !-- 开启延迟加载 -- setting namelazyLoadingEnabled valuetrue/ !-- 将积极加载改为按需加载 -- setting nameaggressiveLazyLoading valuefalse/ /settingsAccountMapper.xml 配置resultMap idaccountMap typeAccount result propertyid columnid/ result propertyuid columnuid/ result propertymoney columnmoney/ association propertyuser javaTypeUser selectcom.qcbyjy.mapper.UserMapper.findById columnuid/ /resultMap select idfindAll resultMapaccountMap SELECT * from account /select二、MyBatis缓存机制2.1 一级缓存SqlSession缓存一级缓存是 SqlSession 级别的缓存底层使用Map集合存储key执行的SQL语句value查询的结果对象一级缓存的生命周期与SqlSession相同。以下操作会清空一级缓存session.clearCache()session.update()、insert()、delete()、commit()、close()Test public void testFindById() { User user mapper.findById(41); System.out.println(user); // 第二次查询会从缓存中获取不会查询数据库 User user2 mapper.findById(41); System.out.println(user2); }三、注解开发3.1 单表CRUD注解在 SqlMapConfig.xml 中配置Mapper接口所在的包mappers package namecom.qcbyjy.mapper/ /mappersUserMapper接口public interface UserMapper { Select(select * from user) Results(iduserMap, value{ Result(idtrue, columnid, propertyid), Result(columnusername, propertyusername), Result(columnbirthday, propertybirthday), Result(columnsex, propertysex), Result(columnaddress, propertyaddress) }) public ListUser findAll(); Select(select * from user where id #{uid}) ResultMap(userMap) public User findById(Integer uid); Insert(insert into user (username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address})) public void insert(User user); Update(update user set username #{username},birthday#{birthday},sex#{sex},address#{address} where id #{id}) public void update(User user); Delete(delete from user where id #{id}) public void delete(Integer userId); Select(select count(*) from user) public Integer findByCount(); Select(select * from user where username like #{username}) public ListUser findByUsername(String username); }3.2 多对一注解查询延迟加载public interface AccountMapper { Select(select * from account) Results(value{ Result(idtrue, columnaid, propertyid), Result(columnuid, propertyuid), Result(columnmoney, propertymoney), Result(propertyuser, javaTypeUser.class, columnuid, oneOne(selectcom.qcbyjy.mapper.UserMapper.findById, fetchTypeFetchType.LAZY)) }) public ListAccount findAll(); }3.3 一对多注解查询延迟加载public interface UserMapper { Select(select * from user) Results(iduserMap, value{ Result(idtrue, columnid, propertyid), Result(columnusername, propertyusername), Result(columnbirthday, propertybirthday), Result(columnsex, propertysex), Result(columnaddress, propertyaddress), Result(propertyaccounts, columnid, manyMany(selectcom.qcbyjy.mapper.AccountMapper.findByUid, fetchTypeFetchType.LAZY)) }) public ListUser findAll(); } public interface AccountMapper { Select(select * from account where uid #{uid}) public ListAccount findByUid(Integer uid); }四、总结特性XML方式注解方式简单语句支持支持更简洁复杂语句支持较复杂动态SQL支持良好支持但较繁琐可读性较高高简单语句推荐场景复杂SQL、动态SQL简单SQL、Spring Boot项目实际开发建议简单SQL可以使用注解方式复杂SQL和动态SQL建议使用XML方式-。
深入解析Cpp2IL:揭秘Unity游戏逆向工程的强大工具 【免费下载链接】Cpp2IL Work-in-progress tool to reverse unitys IL2CPP toolchain. 项目地址: https://gitcode.com/gh_mirrors/cp/Cpp2IL
你是否曾面对编译后的Unity游戏二进制文件感到无从下手…
📅 2026/8/3 15:13:08
优秀表达能力看起来像天赋,实际上更多是长期刻意练习后形成的“自动化能力”。很多人看到一个人:
讲话流畅;逻辑清晰;临场反应快;能影响别人。
容易产生:“这个人天生会说。”但隐藏在背后的,是…
📅 2026/8/3 15:13:08
1. 企业网站SSL证书的必要性解析 当用户访问一个没有SSL证书的网站时,现代浏览器会明确显示"不安全"警告。这就像商铺门口挂着"本店无消防许可"的告示,会直接吓跑90%的潜在客户。作为运维过上百个企业网站的老手,我见过…
📅 2026/8/3 15:13:08
更多请点击:
https://intelliparadigm.com
第一章:ChatGPT搜不到的,它能秒出结果:6款小众但碾压级AI搜索工具,资深CTO私藏多年首次公开 当ChatGPT在回答“2024年Q2全球RISC-V芯片出货量按厂商细分”时返回“我无法获取…
📅 2026/8/3 16:07:47
如何快速获取网盘直链:LinkSwift完整使用指南与深度技术分析 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 …
📅 2026/8/3 16:07:47
更多请点击:
https://intelliparadigm.com
第一章:AI驱动公众号矩阵的战略价值与生态定位 在移动内容生态持续演进的当下,公众号不再仅是单点传播工具,而是演变为具备智能协同能力的分布式内容节点网络。AI驱动的公众号矩阵&…
📅 2026/8/3 16:07:47
更多请点击:
https://kaifayun.com
第一章:MidJourneyComfyUI双引擎漫画工作流概述 在当代AI图像生成实践中,单一模型往往难以兼顾创意发散性与可控生产性。MidJourney以卓越的美学直觉和风格化能力成为概念草稿与角色设定的首选引擎&#…
📅 2026/8/3 16:07:47
更多请点击:
https://intelliparadigm.com
第一章:开源AI模型推荐 在当前快速演进的AI生态中,开源大语言模型(LLM)与多模态模型已成为开发者构建智能应用的核心基础设施。选择合适的模型不仅关乎推理性能与资源消耗&a…
📅 2026/8/3 16:07:47
这次我们来看一个关于 GPT-5.6 API 的重要更新。根据网络信息,GPT-5.6 的 API 服务价格出现了显著下调,降幅高达 80%,同时推理效率也有所提升。对于开发者、初创公司以及任何需要大规模调用大模型 API 的应用来说,这无疑是一个值得…
📅 2026/8/3 16:06:47
PC服务器具身机器人:构建具身智能从仿真到量产的闭环迭代混合架构一、前言:具身智能需要“混合算力闭环系统”传统人工智能依赖云端静态数据集训练,不具备物理交互能力,无法适应真实世界的不确定性。具身智能(Embodied…
📅 2026/8/3 0:00:19
前言构建机器人、具身智能这类分布式实时系统,通信底座直接决定整套系统的实时性、容错性、组网能力。分布式领域长期存在 4 类经典通信架构:点对点模式、Broker 中间代理模式、广播模式、以数据为中心(DDS)模式。很多开发者疑惑&…
📅 2026/8/3 0:00:19
完整指南:如何让2008-2017年老款Mac运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
还在为手中的老款Mac无法升级到最新系统而烦…
📅 2026/8/3 0:00:19
1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…
📅 2026/8/3 1:24:09
温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…
📅 2026/8/3 1:24:09
1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同ÿ…
📅 2026/8/3 1:24:09
AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言
HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…
📅 2026/8/3 1:24:08
无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut
在数字媒体创作领域,视频编辑处理的质量损…
📅 2026/8/3 1:24:08
1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…
📅 2026/8/3 1:24:08