首页
个人开发
工作相关
共享
搜索
登录
搜索
colo
欲买桂花同载酒
累计撰写
1823
篇文章
累计收到
0
条评论
首页
栏目
首页
个人开发
工作相关
共享
MyBatis
2025-12-13
MyBatis 多表关联查询中的延迟加载与性能优化策略
在MyBatis多表关联场景下实现高性能查询的核心要点:使用<association>/<collection>的fetchType="lazy"启用延迟加载通过aggressiveLazyLoading=false配置避免侵入式加载结合@Lazy注解实现方法级控制使用@Fetch注解定制SQL分批加载策略在事务边界内操作避免延迟加载失效
2025年-12月-13日
4 阅读
0 评论
MyBatis
2025-12-13
MyBatis 多表关联查询中如何解决 N+1 问题并实现高性能延迟加载?
解决 N+1 问题的核心方案:启用全局延迟加载配置:lazyLoadingEnabled=true使用 <collection>/<association> 的 fetchType='lazy'结合 aggressiveLazyLoading=false 防止侵入式加载通过 @MapperScan 确保动态代理生效使用 BatchExecutor 批量加载优化性能
2025年-12月-13日
4 阅读
0 评论
MyBatis
2025-12-11
设计高性能分页查询并解决深分页性能问题
高性能分页方案需解决深分页性能瓶颈:避免使用RowBounds内存分页,改用数据库物理分页(如MySQL的LIMIT)针对深分页问题,采用游标分页(基于索引列)或延迟关联优化通过MyBatis插件统一处理分页逻辑,自动改写SQL只查询必要字段,避免SELECT *
2025年-12月-11日
6 阅读
0 评论
MyBatis
2025-12-9
MyBatis 多租户架构下动态数据源切换与 SQL 改写实践
实现多租户架构需要解决两个核心问题:动态数据源路由:根据租户上下文自动切换数据源SQL 自动改写:在运行时动态添加租户隔离条件解决方案:使用 AbstractRoutingDataSource 实现动态数据源路由通过 MyBatis 插件拦截 SQL 并重写语句利用 JSqlParser 解析和修改 SQL 语法树结合 ThreadLocal 管理租户上下文
2025年-12月-9日
4 阅读
0 评论
MyBatis
2025-12-9
MyBatis中#{}和${}的区别是什么?
在MyBatis中,#{}和${}都是参数占位符,但有以下核心区别:#{}:使用预编译处理,能防止SQL注入,会自动添加引号处理字符串${}:直接拼接SQL字符串,有SQL注入风险,需手动处理引号使用场景:#{}适用于值传递(如WHERE条件),${}适用于动态表名/列名
2025年-12月-9日
4 阅读
0 评论
MyBatis
2025-12-5
MyBatis批量插入性能优化与实现方案
当使用MyBatis的标签进行大批量数据插入时,主要面临两个问题:SQL语句过长:拼接的SQL可能超出数据库限制(如MySQL的max_allowed_packet)性能低下:单条超长SQL解析执行效率远低于批量提交优化方案:使用ExecutorType.BATCH模式配合sqlSession.flushStatements()设置rewriteBatchedStatements=true(MySQL)启用真正的批量操作分批次提交(建议每1000条提交一次)
2025年-12月-5日
4 阅读
0 评论
MyBatis
2025-12-5
MyBatis中#{}和${}的区别及防止SQL注入的最佳实践
核心区别:#{}:预编译处理,自动添加单引号防止SQL注入${}:字符串直接替换,存在SQL注入风险最佳实践:普通参数值必须使用#{}占位符动态表名/列名等无法预编译的场景才使用${},并需严格校验参数永远不要用${}处理用户输入值
2025年-12月-5日
5 阅读
0 评论
MyBatis
2025-12-5
MyBatis中#{}和${}的区别及SQL注入防范
核心区别:#{}:预编译处理,自动添加单引号防止SQL注入${}:字符串直接替换,存在SQL注入风险使用建议:优先使用#{}处理用户输入${}仅用于动态表名/列名等非值场景使用${}时必须手动过滤参数
2025年-12月-5日
5 阅读
0 评论
MyBatis
1
2