MyBatis延迟加载、缓存机制与注解开发
一、延迟加载策略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:揭秘Unity游戏逆向工程的强大工具

深入解析Cpp2IL:揭秘Unity游戏逆向工程的强大工具 【免费下载链接】Cpp2IL Work-in-progress tool to reverse unitys IL2CPP toolchain. 项目地址: https://gitcode.com/gh_mirrors/cp/Cpp2IL 你是否曾面对编译后的Unity游戏二进制文件感到无从下手&#xf…

2026/8/8 15:04:23 阅读更多 →
大量优秀表达者:都是训练出来的。

大量优秀表达者:都是训练出来的。

优秀表达能力看起来像天赋,实际上更多是长期刻意练习后形成的“自动化能力”。很多人看到一个人: 讲话流畅;逻辑清晰;临场反应快;能影响别人。 容易产生:“这个人天生会说。”但隐藏在背后的,是…

2026/8/7 19:48:43 阅读更多 →
企业网站SSL证书选型与部署全指南

企业网站SSL证书选型与部署全指南

1. 企业网站SSL证书的必要性解析 当用户访问一个没有SSL证书的网站时,现代浏览器会明确显示"不安全"警告。这就像商铺门口挂着"本店无消防许可"的告示,会直接吓跑90%的潜在客户。作为运维过上百个企业网站的老手,我见过…

2026/8/8 2:07:37 阅读更多 →

最新新闻

MCBE红石T触发器设计:在速度、稳定与体积间寻找最优解

MCBE红石T触发器设计:在速度、稳定与体积间寻找最优解

你肯定遇到过这种情况:在《我的世界》基岩版(MCBE)里,想做个自动门、自动农场或者红石时钟,结果发现脉冲信号要么太快、要么太卡、要么不稳定。你试过各种中继器、比较器、活塞的组合,要么延迟太高&#xf…

2026/8/8 15:03:50 阅读更多 →
2026年C语言学习路线图:从零基础到就业实战指南

2026年C语言学习路线图:从零基础到就业实战指南

如果你正在考虑学习编程,或者已经决定从C语言开始,但面对网上浩如烟海、质量参差不齐的教程感到无从下手,那么这篇文章就是为你准备的。很多人以为学C语言就是背语法、写算法,但真正决定你能否“学完即就业”的,远不止…

2026/8/8 15:03:50 阅读更多 →
DeepSTARR未来发展路线图:MultiMolecule团队的5大功能升级计划

DeepSTARR未来发展路线图:MultiMolecule团队的5大功能升级计划

终极指南:TaroPlatform架构设计与多小程序平台适配层实现原理 【免费下载链接】taro 开放式跨端跨框架解决方案,支持使用 React/Vue/Nerv 等框架来开发微信/京东/百度/支付宝/字节跳动/ QQ 小程序/H5/React Native 等应用。 https://taro.zone/ 项目地…

2026/8/8 15:03:50 阅读更多 →
革命性AI换脸技术:sd-webui-reactor架构设计与专业级应用方案

革命性AI换脸技术:sd-webui-reactor架构设计与专业级应用方案

革命性AI换脸技术:sd-webui-reactor架构设计与专业级应用方案 【免费下载链接】sd-webui-reactor 项目地址: https://gitcode.com/gh_mirrors/sd/sd-webui-reactor AI换脸技术正在重塑数字内容创作领域,而sd-webui-reactor作为Stable Diffusion生…

2026/8/8 15:03:50 阅读更多 →
SVGnest完整指南:免费开源的智能材料切割优化工具

SVGnest完整指南:免费开源的智能材料切割优化工具

SVGnest完整指南:免费开源的智能材料切割优化工具 【免费下载链接】SVGnest An open source vector nesting tool 项目地址: https://gitcode.com/gh_mirrors/sv/SVGnest 你是否曾经面对激光切割或CNC加工任务时,看着昂贵的材料被大量浪费而感到心…

2026/8/8 15:03:50 阅读更多 →
私有化AI智能体平台OpenClaw:从意图理解到自动化执行的实战指南

私有化AI智能体平台OpenClaw:从意图理解到自动化执行的实战指南

1. 项目概述:从“聊天”到“干活”的智能体革命 最近和几个做企业服务的朋友聊天,大家都有一个共同的感受:现在市面上的AI助手,聊起天来头头是道,引经据典,但真要让它们去“干活”——比如自动处理一封邮件…

2026/8/8 15:02:50 阅读更多 →

日新闻

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

AI多智能体时代来临,读懂MCP与A2A架构,抢占企业数字化新风口

当下AI应用飞速普及,无数企业下场搭建智能体系统,可落地阶段难题接踵而至:上下文无限堆积频繁爆栈、AI工具调用准确率低下、Token成本居高不下、企业数据权限混乱暗藏安全隐患……很多团队卡在架构搭建环节,空有前沿技术概念&…

2026/8/8 0:00:07 阅读更多 →
PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码

PHP二维码生成终极指南:用chillerlan/php-qrcode打造专业级二维码 【免费下载链接】php-qrcode A PHP QR Code generator and reader with a user-friendly API. 项目地址: https://gitcode.com/gh_mirrors/ph/php-qrcode 在当今数字时代,二维码已…

2026/8/8 0:00:08 阅读更多 →
UniApp微信小程序隐私保护组件开发:从原理到实战

UniApp微信小程序隐私保护组件开发:从原理到实战

1. 项目缘起:为什么我们需要一个隐私保护通用组件?最近在维护一个基于uniapp开发的微信小程序矩阵时,我遇到了一个非常棘手的问题。随着平台对用户隐私保护的要求越来越严格,几乎每一个新版本发布,或者在某些特定机型&…

2026/8/8 0:00:08 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/8 8:58:26 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/7 23:24:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/7 17:02:37 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/7 23:54:54 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/7 17:02:36 阅读更多 →