【MyBatis性能调优关键一步】:彻底搞懂lazy loading配置与关联映射

第一章:MyBatis延迟加载机制概述

MyBatis 作为一个优秀的持久层框架,提供了强大的 SQL 映射与对象关系映射能力。其中,延迟加载(Lazy Loading)是其优化性能的重要特性之一。延迟加载的核心思想是:在关联对象未被实际访问前,不执行相应的 SQL 查询,从而减少不必要的数据库访问,提升系统响应速度。

延迟加载的基本原理

当查询一个包含关联对象的结果时(例如一对一、一对多关系),MyBatis 可以将关联对象的加载推迟到真正调用其 getter 方法时才触发查询。这种机制依赖于动态代理技术,MyBatis 使用 CGLIB 或 Javassist 创建目标对象的代理,在访问关联属性时拦截调用并执行对应的 SQL。

启用延迟加载的配置

在 MyBatis 的核心配置文件中,需显式开启延迟加载功能,并设置相关参数:
<settings>
    <!-- 开启延迟加载开关 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- 将积极加载关闭,避免立即加载所有关联 -->
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>
上述配置表示启用延迟加载,并防止在调用任一方法时加载全部关联对象。

延迟加载的应用场景

  • 主表数据量大,而关联信息使用频率低
  • 分页查询中仅展示主信息,详情点击后才加载关联内容
  • 树形结构或多级嵌套对象的逐层展开

配置参数对比

配置项作用推荐值
lazyLoadingEnabled是否启用延迟加载true
aggressiveLazyLoading是否积极加载所有属性false
proxyFactory指定代理实现方式CGLIB 或 JAVASSIST
通过合理配置与使用,MyBatis 的延迟加载机制能够显著降低数据库压力,提高应用整体性能。

第二章:延迟加载的核心原理与配置方式

2.1 延迟加载的基本概念与工作原理

延迟加载(Lazy Loading)是一种在程序运行时按需加载资源的优化策略,广泛应用于对象关系映射(ORM)、图像渲染和模块化系统中。其核心思想是避免一次性加载所有数据,仅在真正需要时才执行加载操作,从而减少初始负载压力。
工作流程解析
当访问某个未加载的关联对象时,系统会触发代理拦截并发起数据库查询。例如,在使用 ORM 框架时:

type User struct {
    ID   uint
    Name string
    Posts []*Post `gorm:"foreignKey:UserID"`
}
// 查询用户时不立即加载 Posts
user := &User{}
db.First(user, 1)
// 直到访问 Posts 字段才执行 SELECT * FROM posts WHERE user_id = 1
上述代码中,Posts 字段通过外键关联,在首次访问时才发起查询,体现了延迟加载的惰性求值特性。
  • 减少内存占用,提升启动性能
  • 适用于关联数据量大但非必用的场景
  • 可能引发 N+1 查询问题,需结合预加载权衡使用

2.2 全局配置项 lazyLoadingEnabled 详解

延迟加载机制概述
lazyLoadingEnabled 是 MyBatis 的核心配置项之一,用于控制是否开启关联对象的延迟加载功能。当设置为 true 时,仅在访问关联属性时触发 SQL 查询,有效减少初始查询开销。
<settings>
  <setting name="lazyLoadingEnabled" value="true"/>
  <setting name="aggressiveLazyLoading" value="false"/>
</settings>
上述配置启用延迟加载,并关闭激进模式,确保按需加载。其中 aggressiveLazyLoading 若为 true,则调用任一方法即加载全部关联对象。
性能影响与使用建议
  • 优点:降低内存占用,提升查询响应速度;
  • 风险:可能引发 N+1 查询问题或在会话关闭后访问导致异常;
  • 建议:结合 association 和 collection 懒加载注解精细化控制。

2.3 aggressiveLazyLoading 的作用与陷阱

作用机制解析
aggressiveLazyLoading 是 MyBatis 提供的一种懒加载优化策略,用于控制是否在调用任意方法时触发所有未加载的关联属性。当设置为 true 时,只要访问对象的任意 getter 方法,便会立即加载所有延迟加载的关联数据。
<setting name="aggressiveLazyLoading" value="true"/>
该配置通常用于简化数据访问逻辑,避免因部分字段未加载导致后续业务异常。
潜在陷阱
启用此选项可能导致“N+1 查询问题”恶化,尤其是在嵌套关联较多时,一次简单访问可能触发大量数据库查询,显著降低性能。
  • 默认值为 false,表示仅加载显式访问的关联对象;
  • 设为 true 时需谨慎评估关联复杂度与数据量;
  • 建议结合 lazyLoadingEnabled 一同配置以精确控制行为。

2.4 lazyLoadTriggerMethods 的应用场景解析

在复杂前端架构中,lazyLoadTriggerMethods 提供了按需加载资源的灵活机制,适用于性能敏感型场景。
典型使用场景
  • 长页面滚动时动态加载图片或组件
  • 标签页切换时延迟初始化非活跃面板
  • 用户交互触发模块加载(如点击弹窗)
配置示例与说明

const config = {
  lazyLoadTriggerMethods: ['onClick', 'onScroll', 'onVisible']
};
上述代码定义了三种触发方式: - onClick:用户点击元素时加载 - onScroll:滚动进入视口时激活 - onVisible:通过 IntersectionObserver 检测可见性 该机制有效降低首屏加载负担,提升应用响应速度。

2.5 结合日志分析延迟加载的执行流程

在排查性能瓶颈时,结合应用日志与数据库访问记录可清晰还原延迟加载的执行路径。
触发时机分析
当访问未初始化的代理对象时,Hibernate 会触发 SQL 查询。日志中典型输出如下:
DEBUG org.hibernate.SQL - 
    select orders0_.user_id as user_id1_1_0_,
           orders0_.id as id2_1_0_,
           orders0_.id as id1_0_0_,
           orders0_.amount as amount2_0_0_
    from order orders0_ 
    where orders0_.user_id=?
该日志表明,在获取用户关联订单时,框架自动生成并执行了按外键查询的 SQL。
调用链追踪
通过堆栈日志可定位触发点:
  • UserService.getUserWithOrders()
  • LazyInitializationException 捕获位置
  • Hibernate 代理类 $Proxy.invoke()
执行阶段对照表
阶段日志特征说明
代理创建created proxy for: User.orders集合被包装为 PersistentSet
SQL 执行org.hibernate.SQL - select ...实际数据库访问发生
结果填充hydrated entity collection数据注入到集合缓存

第三章:关联映射中的延迟加载实践

3.1 一对一关系下的延迟加载配置

在ORM框架中,一对一关系的延迟加载能有效提升查询性能,避免不必要的关联数据加载。
启用延迟加载
以GORM为例,可通过结构体标签显式配置:
type User struct {
    ID    uint
    Name  string
    Profile Profile `gorm:"foreignKey:UserID;preload:false"`
}

type Profile struct {
    ID      uint
    UserID  uint
    Email   string
}
其中 preload:false 表示默认不加载 Profile 数据,仅在访问时触发懒加载。
加载时机控制
使用 Preload 显式加载关联:
db.Preload("Profile").First(&user, 1)
该语句会先查询用户,再按需加载其 Profile,实现按需加载策略,减少内存占用并提升响应速度。

3.2 一对多场景中延迟加载的效果验证

在处理一对多关系时,延迟加载能有效减少初始查询的性能开销。以用户与订单为例,仅在访问其关联订单时才触发数据库查询。
实体定义示例
type User struct {
    ID      uint
    Name    string
    Orders  []Order `gorm:"foreignKey:UserID"`
}

type Order struct {
    ID      uint
    UserID  uint
    Amount  float64
}
上述结构体中,User 通过切片引用多个 Order,GORM 默认启用延迟加载(Lazy Loading),即初始化 User 时不立即加载 Orders。
验证查询行为
  • 首次查询用户:仅执行 SELECT * FROM users WHERE id = ?
  • 访问 user.Orders 时:触发 SELECT * FROM orders WHERE user_id = ?
通过日志观察 SQL 执行时机,可确认延迟加载显著降低了一次性数据拉取量,适用于关联数据量大但非必显的场景。

3.3 嵌套查询与延迟加载的协同工作机制

在复杂数据模型中,嵌套查询与延迟加载协同工作可显著提升系统性能。当主查询执行时,关联对象不会立即加载,而是在实际访问时触发子查询获取数据。
延迟加载触发机制
以 Go + GORM 为例:
// 查询用户信息(不立即加载订单)
user := User{}
db.First(&user, 1)
// 访问 Orders 字段时才执行 SELECT * FROM orders WHERE user_id = 1
fmt.Println(user.Orders)
上述代码中,user.Orders 的查询被推迟到首次访问时执行,避免了不必要的 JOIN 操作。
性能对比
策略初始查询开销总查询次数
立即加载高(JOIN)1
延迟加载低1 + N(按需)

第四章:性能优化与常见问题规避

4.1 延迟加载对SQL执行次数的影响分析

延迟加载(Lazy Loading)是一种按需加载关联数据的机制,常用于ORM框架中。虽然提升了初始查询性能,但可能引发“N+1查询问题”,显著增加SQL执行次数。
典型N+1问题示例

// 查询所有用户
List<User> users = userRepository.findAll();
for (User user : users) {
    System.out.println(user.getOrders().size()); // 每次触发一次SQL加载订单
}
上述代码中,1次查询用户 + N次查询订单,共执行N+1次SQL,严重影响性能。
优化策略对比
策略SQL次数内存占用
延迟加载N+1低
立即加载(Eager)1高
合理选择加载策略,结合批量抓取(batch fetching),可在性能与资源间取得平衡。

4.2 N+1查询问题的识别与解决方案

问题识别
N+1查询问题通常出现在ORM框架中,当获取N条记录后,对每条记录额外发起一次数据库查询,导致总共执行N+1次SQL。例如在查询用户及其关联的订单时,若未合理配置关联加载策略,将逐条查询订单数据。
典型场景示例

List<User> users = userRepository.findAll(); // 1次查询
for (User user : users) {
    System.out.println(user.getOrders().size()); // 每个用户触发1次订单查询
}
上述代码会先执行1次查询获取用户列表,随后为每个用户执行1次订单查询,形成N+1问题。
解决方案
  • 预加载(Eager Loading):使用JOIN一次性获取关联数据;
  • 批量抓取(Batch Fetching):通过设置batch-size,分批加载关联对象;
  • DTO投影查询:仅查询所需字段,减少数据冗余。

4.3 延迟加载在高并发环境下的性能权衡

在高并发系统中,延迟加载虽能减少初始资源消耗,但可能引发数据库瞬时压力激增。当大量请求同时触发未加载的关联数据时,会形成“N+1查询”问题,显著增加响应延迟。
典型场景分析
以用户订单列表为例,若每个订单的用户信息延迟加载,在1000并发请求下可能产生上千次额外数据库查询。
策略初始负载峰值延迟适用场景
延迟加载低高低频关联访问
预加载高低高频关联访问
优化代码示例

// 使用预加载替代延迟加载
db.Preload("User").Find(&orders)
// Preload 强制一次性加载关联User数据,避免逐条查询
// 在高并发读场景下可降低数据库总请求数量
通过预加载机制,将多次小查询合并为一次批量操作,有效缓解数据库连接池压力,提升整体吞吐能力。

4.4 如何通过测试验证延迟加载的实际效果

在实际开发中,验证延迟加载是否生效,关键在于观测对象初始化时机与数据库查询行为。
使用日志监控SQL执行
启用Hibernate或JPA的SQL日志功能,观察关联对象访问时是否触发额外查询:
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
上述配置可输出所有SQL语句及参数绑定过程。当访问未初始化的代理对象时,若日志中出现对应SELECT语句,则证明延迟加载已触发。
编写单元测试验证加载状态
通过断言实体状态,确认关联对象初始未被加载:
  • 调用getter前:关联属性应为Hibernate代理对象
  • 调用getter后:触发数据库查询并完成实例化
结合日志与断言,可完整验证延迟加载机制的有效性与性能收益。

第五章:总结与最佳实践建议

性能监控与调优策略
在高并发系统中,持续的性能监控是保障稳定性的关键。推荐使用 Prometheus + Grafana 组合进行指标采集与可视化展示:

# prometheus.yml 片段
scrape_configs:
  - job_name: 'go_service'
    static_configs:
      - targets: ['localhost:8080']
定期分析 GC 时间、内存分配速率和 goroutine 数量,可有效识别潜在瓶颈。
配置管理最佳实践
避免将敏感配置硬编码在代码中,应使用环境变量或集中式配置中心。以下是 Go 项目中常见的配置加载方式:
  • 使用 os.Getenv 读取环境变量
  • 集成 Viper 实现多格式配置支持(JSON、YAML、TOML)
  • 在 Kubernetes 中通过 ConfigMap 和 Secret 注入配置
日志结构化与集中处理
采用结构化日志(如 JSON 格式)便于后续分析。推荐使用 zap 或 zerolog 库:

logger, _ := zap.NewProduction()
defer logger.Sync()
logger.Info("http request handled",
  zap.String("method", "GET"),
  zap.String("path", "/api/v1/users"),
  zap.Int("status", 200))
结合 ELK 或 Loki 进行日志聚合,提升故障排查效率。
安全加固要点
风险项应对措施
SQL注入使用预编译语句或ORM参数绑定
敏感信息泄露禁用详细错误回显,启用CSP头
认证绕过统一使用OAuth2或JWT标准流程
政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx 政府科技管理者如何提升科技成果转化项目进场交易的备案效率? 立即下载

相关推荐

科技中介服务机构如何通过智能体技术提升服务效率与专业度?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

MyBatis——懒加载:lazyLoadingEnabled和aggressiveLazyLoading的使用

懒加载针对什么使用的?为什么要用懒加载? 懒加载针对级联使用的,懒加载的目的是减少内存的浪费和减轻系统负担。 懒加载是什么? 你可以理解为按需加载,当我调用到关联的数据时才与数据库交互否则不交互。 如何使用开启懒加载? 在mybatis的主配置文件的Setings标签开启。 <settings> <setting name="lazyLoadingEnabled" val...

摸爬滚打一路向前的博客 1万+

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

MyBatis关联映射:association核心解析

在当今的软件开发领域,随着业务需求的日益复杂,数据库表之间的关系也变得越来越复杂。在这样的背景下,如何有效地管理这些复杂的关系,成为了开发人员面临的一大挑战。MyBatis作为一款优秀的持久层框架,提供了强大的关联映射功能,使得开发者能够轻松地处理实体之间的复杂关系。本文将围绕MyBatis核心知识点之association:关联概述展开,探讨其重要性和实用性。在现实开发中,我们常常会遇到一个实体类与另一个实体类之间存在一对多或多对多的关系。

我是Java程序员廖志伟,感谢朋友们的支持! 1281

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

MyBatis 执行流程与关联映射

本文介绍了MyBatis的核心执行流程、动态代理机制、多表关联映射及延迟加载原理。MyBatis执行流程分为读取配置文件、生成SqlSessionFactory、创建SqlSession和操作数据库四个步骤。通过动态代理机制,MyBatis在运行时生成Mapper接口的代理对象,无需手动实现接口。在多表关联查询方面,MyBatis支持嵌套查询方式,通过association标签实现分步查询。延迟加载机制则通过配置lazyLoadingEnabled参数实现,仅在访问关联对象时才触发查询,避免不必要的数据库访

2301_80478870的博客 380

光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

MyBatis多表关联查询实战:一对一、一对多、多对多映射详解与性能优化

在关系型数据库应用开发中,多表关联查询是处理复杂业务数据的核心技术。其原理是通过SQL的JOIN操作将分散在多个表中的数据关联起来,解决对象与关系数据库之间的阻抗不匹配问题。这项技术的核心价值在于能够高效、灵活地将扁平化的查询结果映射为具有嵌套关系的对象模型,从而支撑订单、用户、商品等实体间复杂关系的业务场景。MyBatis框架通过强大的ResultMap配置,提供了<association>和<collection>标签,专门用于定义一对一、一对多及多对多的对象映射关系。在实际工程实践中,开发者需要重点关

weixin_33922670的博客 312

无功优化电网故障下分布式能源系统多目标优化[并网转换器(GCC)](Matlab代码&Simulink实现)

内容概要:本文详细介绍了基于Plecs或Simulink平台构建的全桥LLC谐振变换器仿真模型,重点研究了变频控制与移相混合控制策略下的闭环系统设计与参数优化方法。内容涵盖全桥LLC谐振变换器的工作原理、小信号建模技术(如扩展描述函数EDF)、PID控制器参数整定过程以及软开关实现条件,并通过仿真验证了系统在稳态输出性能、动态响应特性(如启动过程与负载阶跃)和频率调节平滑性等方面的优良表现。同时提供了完整的仿真模型、参数设计报告及说明文档,有助于读者复现结果并深入理解控制机制与建模细节。; 适合人群:具备电力电子、自动控制等相关专业知识背景,从事高效率电源设计、新能源变换系统研发的工程师及高等院校电力电子与电力传动方向的研究生。; 使用场景及目标:①掌握LLC谐振变换器的小信号建模与闭环控制系统设计方法;②学习并应用变频与移相结合控制策略提升电源转换效率;③支撑科研项目中的电力电子系统仿真验证或学位论文课题开发;④复现高水平学术论文中关于谐振变换器的控制方案与性能分析。; 阅读建议:建议结合所提供的仿真模型与参数设计资料,边运行仿真边对照文章内容理解控制逻辑与建模过程,特别关注小信号模型的建立方法与PID控制器参数整定环节,以增强对实际工程问题的分析与设计能力。

西门子1500T插补控制实战:从硬件组态到轨迹规划

本文详细解析了西门子1500T插补控制的完整实战流程。从硬件组态中正确选择带T的CPU和配置报文105,到创建同步轴与插补器工艺对象,再到使用MC_Interpolator功能块编程实现直线与圆弧插补,并分享了调试技巧与常见问题解决方案,为工程师实现高精度复杂轨迹规划提供清晰指导。

weixin_29228781的博客 425

springboot mybatis

MyBatis 常用关键字 = SQL 关键字 + 动态 SQL 标签 + #{} / ${} + resultMap + 缓存配置。

a378113472的博客 405

接口自动化测试如何做?测试老鸟总结,接口测试数据构造大全......

接口参数的数据获取:接口文档:接口文档通常会包含接口需要的请求参数和返回结果的格式、类型等信息;测试用例设计:根据测试用例设计的需求,可以确定需要哪些请求参数以及期望的响应结果;业务数据:从实际业务场景中获取数据,以确保测试数据的真实性和代表性;数据库:从数据库中获取数据,作为接口测试的输入参数;随机数据生成器:通过随机数据生成器生成测试数据,以增加测试用例的多样性和覆盖率。在选择数据来源时,需要根据具体情况进行选择。如果有可靠的接口文档,可以直接从文档中获取请求参数和预期结果;

798

MyBatis关联映射、延迟加载(难点)

输出参数resultType 1. 简单类型(8个基本+String) 2. 输出参数为实体对象类型 3. 输出参数为实体对象类型的集合 :虽然输出类型为集合,但是resultType依然写 集合的元素类型(resyltType="Student") 4. 输出参数类型为HashMap     --HashMap本身是一个集合,可以存放多个元素,       但是根据提示发现  返回值为HashM...

Shirley的博客 799

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解

Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。

shizhibuyi1234的博客 7380

latex写论文(TeXstudio工具)

目录前言IEEE模板模板免费分享参考文献写作方法我的.tex文件代码 前言 学校老师要求我们以IEEE顶级会议格式与标准写报告,于是过程虽然麻烦点,但是效果还是不错了,下面先展示一下自己写完的效果。 IEEE模板 我是在 Overleaf 上注册了个账号下载了模板,里面有各种会议论文的写作模板,这个注册还挺麻烦,要外网注册,国内邮箱都不行。进行后点菜单,菜单里有下载源码。 https://cn.overleaf.com/project/5fe5b082dff088649fc67106 模板免费分享 已

小样yx的博客 6754

MyBatis 中 resultType 与 resultMap 的深度解析与应用实践

MyBatis结果映射方式对比:resultType与resultMap详解 本文系统对比了MyBatis中两种结果映射方式的特性和应用场景。resultType适用于简单单表查询,通过自动映射实现快速开发;resultMap则支持复杂的关联查询和自定义映射规则,可处理一对一、一对多关系。文章详细分析了两者的核心差异,包括灵活性、配置复杂度及性能表现,并提供了继承重用、自动手动映射结合等高级技巧。通过完整的实战示例,展示了如何根据业务需求动态选择映射策略,最后给出了开发建议:简单场景用resultType,

ywl470812087的博客 11万+

transformer中QKV的通俗理解(剩女与备胎的故事)

用vit的时候读了一下transformer的思想,前几天面试结束之后发现对QKV又有点忘记了, 写一篇文章来记录一下 参考链接: 哔哩哔哩:在线激情讲解transformer&Attention注意力机制(上)在线激情讲解transformer&Attention注意力机制(上)_哔哩哔哩_bilibiliAttention is all you need介绍 更具体的介绍可以去阅读论文在Attention is all you need这篇文章中提出了著名的Transformer模型Transforme

Peter的博客 1万+

为什么你的延迟加载不生效?5步定位MyBatis触发失败原因

快速定位MyBatis延迟加载失效问题,系统解析延迟加载的触发方法与配置要点。涵盖一对一、一对多场景下的代理机制、属性设置及常见误区,助你精准排查加载失败原因。掌握核心配置与调试技巧,值得收藏。

CodeWhim的博客 855

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 727

把 SAP S/4HANA 中的 Maintain Email Templates 用好:从模板维护、语言变体、业务绑定到传输治理的完整实践

摘要:SAP邮件模板管理常被低估,实则关乎审批通知、业务提醒等关键输出。官方推荐通过复制标准模板实现自定义,而非直接修改标准内容,以保持核心稳定。模板维护涉及语言变体、业务绑定、数据传输等治理环节,需业务顾问与开发团队协作确保字段来源与渲染逻辑。实施时需注意Fiori配置、权限分配及传输管理,避免测试与生产环境差异。模板设计应平衡灵活性与复杂度,遵循分层测试策略(内容、数据、流程),并建立命名规范以维护资产清晰度。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 69
上一篇: 【Java字符串处理必知】:String.isBlank()与isEmpty()的5大区别及最佳实践
下一篇: Java高手都在用的TreeMap技巧(Comparator排序全攻略)
StepLens
博客等级 码龄1年 149粉丝 2031原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值