- 博客(284)
- 资源 (1)
- 收藏
- 关注
原创 MyBatis-Plus saveBatch 在异步线程中事务未提交问题排查与修复
批量导入功能的事务问题分析与优化 问题现象:在异步线程中使用saveBatch方法批量插入数据,方法返回true但数据库无记录。 根本原因: 异步线程不在Spring事务管理范围内 事务范围过大导致性能问题 解决方案: 使用TransactionTemplate或@Transactional确保异步事务提交 缩小事务范围,只对关键操作使用事务 采用分批处理策略(每批10条记录) 优化批量查询避免N+1问题 优化效果: 解决数据未持久化问题 提升系统并发性能 减少数据库锁定时间 关键实践: 异步线程需显式管理
2026-01-08 09:33:53
818
原创 Cursor IDE 中 Spring Boot 项目启动内存不足问题解决方案
Spring Boot项目内存问题解决方案 问题现象:Cursor IDE运行Spring Boot项目时出现内存不足、启动失败或性能问题。 主要原因: JVM默认内存配置不足 多模块项目资源占用高 DevTools消耗额外内存 推荐解决方案: 通过launch.json配置(最佳方案): 在.vscode/launch.json中添加JVM参数 示例配置堆内存(1024m-2048m)和元空间(512m-1024m) 建议启用G1垃圾回收器并禁用DevTools自动重启
2025-12-31 18:36:34
1208
原创 Cursor IDE 中 Java 项目无法跳转到方法定义问题解决方案
摘要:本文针对Cursor IDE中Maven Java项目无法跳转方法定义的问题,提供了系统性的解决方案。问题可能源于语言服务器异常、项目配置错误或环境问题。推荐先清理语言服务器工作区并重启IDE,其次检查Maven项目导入和Java环境配置。详细步骤包括重新加载项目、验证项目结构、手动编译以及检查扩展配置等。对于常见问题如跳转到.class文件、多模块项目异常等也给出了针对性解决方法。最后建议定期维护语言服务器工作区并保持开发环境更新,以预防类似问题发生。
2025-12-31 18:05:41
1727
原创 macOS 下优雅管理 Maven:多版本切换 + settings.xml 自动切换(zsh-only 实战)
本文提出了一套基于zsh的Maven管理方案,解决了多版本切换、不同环境settings.xml配置等常见痛点。方案通过自动化扫描Maven解压目录和settings文件,实现了类似nvm的多版本管理功能,包括mvn-list查看版本、mvn-use切换版本,以及自动生成的mvn-dev等快捷命令来切换不同环境的配置。该方案采用alias劫持和环境变量修改的方式,确保切换操作只影响当前终端,具有安全可控、无侵入的特点。特别适合使用解压版Maven、需要管理多环境配置的开发者,能显著降低构建问题的发生概率,提
2025-12-18 13:49:09
733
原创 一键配置 macOS 终极终端:iTerm2 + Oh My Zsh 自动化安装脚本
还在手动配置终端环境?这个一键脚本帮你快速打造美观高效的 iTerm2 + Oh My Zsh 开发环境!
2025-11-08 20:52:51
1135
原创 基于 Playwright 的小型分布式爬虫 —— Docker化部署与优化
这步是核心,一次性把 Redis、MongoDB、多个 Worker、Monitor 启动起来!services:redis:ports:mongodb:ports:build: .- redisnetworks:worker:build: .- redis- mongodbnetworks:deploy:replicas: 3 # 启动3个Worker副本(可根据需要调整)monitor:build: .ports:- redis- mongodb。
2025-04-27 11:29:30
1080
原创 基于 Playwright 构建小型分布式爬虫(进阶版)
项目特点说明架构简洁易扩展只需增加 Worker 数量即可横向扩展高效率Playwright 原生并发,MongoDB 批量写入优化易监控FastAPI 实现爬虫状态实时可视化可持续升级支持 Docker/Kafka/ES 等进一步大规模演进✅ 非常适合中小型互联网数据采集项目、舆情监控、商品价格监控、招聘信息采集等实际业务需求。
2025-04-27 11:26:41
1051
原创 基于 Playwright 构建小型分布式爬虫项目实战
启动调度器,将目标 URL 推送到 Redis。启动多个 Worker,自动从 Redis 取任务并使用 Playwright 抓取。抓取结果统一存储(MongoDB / Elasticsearch / 文件)。任务消耗完毕后,系统自动停止。架构简单 ✚ 可扩展 ✚ 容错好,非常适合中小型分布式爬虫项目。
2025-04-27 11:21:07
1859
原创 使用 Playwright 构建高效爬虫:原理、实战与最佳实践
优点缺点适配所有现代 JS 网站启动浏览器实例占用一定资源支持多标签页/多浏览器并发相比requests,整体速度稍慢支持复杂交互操作学习曲线略高于传统爬虫框架提供丰富的防反爬功能支持截图、录屏、PDF 导出等扩展操作。
2025-04-27 11:15:48
1996
原创 深入理解 Spring 单元测试:@SpringBootTest、@Value 注入、@MockBean 使用实战与陷阱
✅ 使用加载完整 Spring 环境;✅ 注入 Bean 一定要靠容器注入,不能 new 测试类;✅ Nacos 配置项建议使用 mock 或测试 profile 提供;✅ Mapper 不用 mock,直接@Autowired测试;✅ 区分@Mock与@MockBean使用场景,选对注解是关键。
2025-04-19 17:30:00
1290
1
原创 Spring 单元测试核心注解全解:@InjectMocks、@MockBean、@Mock、@Autowired 的区别与实战
对比维度@Mock@MockBean@Autowired所属体系MockitoMockito是否进容器否否是(替换容器中的 Bean)是(注入容器中的 Bean)是否自动注入依赖否是是是推荐场景纯 Java 单测搭配 @Mock 使用替换容器依赖(整合测试)注入容器内真实对象@Mock:用于快速构造模拟对象,脱离容器;:自动注入多个 mock 到目标类;@MockBean:Spring Boot 提供的 Mock 注入工具,替换容器中原始 Bean;
2025-04-14 19:05:03
2286
原创 Spring Boot 使用 QQ 企业邮箱发送邮件的完整指南(含 535 错误排查)
QQ 企业邮箱作为企业通讯工具,在 Spring Boot 中使用非常方便。但由于安全机制较为严格,使用授权码 + 正确 SSL 配置是发送邮件成功的关键。如果你遇到错误,按照本文 checklist 逐一排查,基本可以快速定位问题所在。
2025-04-14 16:31:38
1199
原创 使用 Mockito 快速构建 Mock 测试环境
Mockito 是编写高质量 Java 单元测试的强大利器。通过它,我们可以模拟外部依赖、聚焦业务逻辑、提升测试效率,是现代 Spring Boot 项目中不可或缺的工具。
2025-04-03 14:48:17
1219
原创 Mock 框架选型:Mockito、EasyMock、PowerMock 横向对比
框架特点适用场景Mockito使用最广泛,语法简洁,集成简单,支持行为验证和交互验证大多数业务逻辑的单元测试EasyMock基于接口生成 Mock,使用录制-回放机制,语法风格不同于 Mockito传统项目或接口驱动系统PowerMock可 Mock 静态方法、final 类、构造函数等旧代码改造、遗留系统测试、难以解耦的代码单元Mock 框架是提升单测效率与覆盖率的有力工具,不同框架各有优势。
2025-04-03 14:32:25
1507
原创 IOC 和 DI 的核心思想
Autowired是 Spring 提供的一个注解,用于实现依赖注入(DI)。它告诉 Spring 容器自动满足对象的依赖关系,无需显式地在代码中创建依赖对象。@Autowired构造方法上字段上Setter 方法上Spring 会根据容器中的 Bean 类型自动进行注入(如果有多个匹配的 Bean,可以通过@Qualifier来指定注入的 Bean)。2.3.1 构造方法注入构造方法注入是@Autowired 最常见的使用方式,当 Spring 创建一个对象时,他会通过构造方法传入所有的依赖对象。
2025-03-25 10:25:49
716
原创 扩展 MyBatis-Plus 支持的查询条件
MyBatis-Plus 支持通过@Select@Update@Insert@Delete注解实现自定义 SQL 查询。在中定义自定义 SQL:</在UserMapper接口中定义自定义查询方法。订单表(Order)@Data订单项表(OrderItem)@Data通过扩展 MyBatis-Plus 支持的查询条件,可以满足复杂的业务需求。自定义 SQL 查询:通过注解或 XML 实现复杂的 SQL 查询。Lambda 查询与条件构造器扩展。
2025-03-11 14:34:28
784
原创 乐观锁与悲观锁的 MyBatis-Plus 实现
乐观锁:适用于读多写少、并发冲突较少的场景,通过版本号实现。悲观锁:适用于写多读少、并发冲突较多的场景,通过数据库锁机制实现。
2025-03-09 15:00:00
1027
原创 使用 MyBatis-Plus 实现数据库的多租户管理
多租户是指在一个应用实例中,多个租户(客户或组织)共享相同的硬件和软件资源,但每个租户的数据和配置是相互隔离的。资源共享:降低硬件和运维成本。数据隔离:确保每个租户的数据安全性和隐私性。通过 MyBatis-Plus 的多租户支持,可以轻松实现多租户管理。多租户的实现原理独立数据库、独立 Schema、共享数据库三种方式。核心是通过租户 ID 实现数据隔离。MyBatis-Plus 的多租户配置使用实现 SQL 拦截与动态参数注入。在实体类中标记租户 ID 字段。SQL 拦截与动态参数注入。
2025-03-08 16:00:00
2141
原创 MyBatis-Plus 性能优化实践
MyBatis-Plus 提供了丰富的功能和插件,帮助开发者优化数据库性能。通过分析常见的 SQL 性能瓶颈、使用缓存、配置性能分析插件以及优化批量操作和分页查询,可以显著提升系统的整体性能。在实际开发中,建议根据具体场景选择合适的优化策略,并结合监控工具持续跟踪和优化性能。
2025-03-08 10:00:00
1297
4
原创 Spring Data JPA 的原理、使用方法与实战场景举例
JPA 是 Java EE 提供的一种 ORM(对象关系映射)规范,用于将 Java 对象映射到数据库表。它的主要实现包括 Hibernate、EclipseLink 等。实体(Entity):通过@Entity注解标记的 Java 类,表示数据库中的一张表。Repository:数据访问层接口,用于操作实体。:JPA 的核心接口,用于管理实体的生命周期和持久化操作。使用@Entity注解标记实体类,并通过@Id@Entity@Data@Id创建一个继承// 根据用户名查询用户。
2025-03-07 11:38:29
1044
原创 MyBatis-Plus 与 Spring Boot 的最佳实践
MyBatis-Plus 与 Spring Boot 的结合为开发者提供了强大的功能和便捷的开发体验。通过合理的配置和优化,我们可以构建出高性能、易维护的应用程序。希望本文的内容能够帮助你在实际项目中更好地使用 MyBatis-Plus 和 Spring Boot。
2025-03-07 11:32:42
1640
原创 如何高效使用 Mybatis-Plus 的批量操作
Mybatis-Plus 提供了强大的批量操作 API,能够帮助开发者高效处理大量数据。通过分批处理、使用 JDBC 批处理、调整数据库连接池配置等优化策略,可以进一步提升批量操作的性能。同时,结合事务管理,能够确保批量操作的数据一致性和原子性。在实际开发中,开发者应根据具体业务场景,合理选择批量操作的方式和优化策略,以达到最佳的性能和可靠性。希望本文能够帮助大家更好地理解和使用 Mybatis-Plus 的批量操作功能。
2025-03-06 16:46:34
1726
原创 支持多数据源的 MyBatis-Plus 实现
在 MyBatis-Plus 中,除了 AbstractRoutingDataSource 方式,还可以使用 @DS 注解指定数据源。
2025-03-06 16:35:34
971
原创 分布式系统中的 Mybatis-Plus 使用技巧
微服务架构中,能简化数据库操作,提高开发效率。在 Spring Cloud 微服务架构下,作为 Mybatis 的增强工具,在。下,数据库配置可能动态变化,推荐使用。中,Mybatis-Plus 提供了。:缓存减少数据库查询,提升系统吞吐量。在微服务架构下,不同服务间需要通过。下,数据分散在多个微服务,面临。,但需要手动实现事务补偿逻辑。数据库高并发访问时,可以结合。的分布式环境下,通常采用。,能够提升系统吞吐量,实现。在高并发场景下,可以采用。当数据量增大时,可以采用。中,数据库操作通常是。
2025-03-05 11:43:13
774
原创 高并发场景下的数据库优化
在高并发系统中,数据库通常是性能瓶颈。面对高并发请求,我们需要采用合适的优化策略,以保证数据库的稳定性和高效性。本文将介绍数据库高并发问题的成因,并结合。数据库连接池(DataSource)是高并发优化的核心组件,推荐使用。,可以极大提高数据库吞吐能力,确保系统在高并发下依然稳定高效!在高并发场景下,数据库优化是一个系统性工程。需要开启 Mybatis-Plus 扩展插件。在高并发场景下,数据库并发控制策略主要分为。在高并发场景下,数据库并发控制策略主要分为。在高并发写入场景下,逐条。
2025-03-04 13:48:10
1764
原创 使用 Mybatis-Plus 实现用户管理系统
数据库表设计用户管理的增删改查角色管理与权限分配优化用户管理功能(分页、模糊查询、缓存)通过 Mybatis-Plus,可以简化 SQL 编写,提高开发效率,使用户管理系统更加高效和易维护。
2025-03-04 11:39:55
512
原创 Mybatis-Plus 插件机制与自定义插件实现
Mybatis-Plus 提供了一个简单而强大的插件机制,允许开发者在 MyBatis 执行 SQL 的过程中插入自定义逻辑。通过插件机制,用户可以实现对 SQL 执行过程的拦截和修改。Mybatis-Plus 插件基于 MyBatis 的拦截器模式进行实现,能够在 MyBatis 执行 SQL 语句前、后进行自定义操作。插件机制的核心是接口,开发者可以通过实现该接口,自定义拦截 SQL 执行的行为。Mybatis-Plus 内置了多个常用插件,例如分页插件、性能分析插件等。
2025-03-03 18:29:34
1522
原创 Mybatis-Plus 配合Sharding-JDBC 实现分库分表
本文介绍了数据库分库分表的概念,并对比了垂直拆分与水平拆分的优缺点。在 MyBatis-Plus 中,可以通过 Sharding-JDBC 轻松实现分库分表,提高数据库的可扩展性和查询性能。此外,我们深入分析了 MyBatis-Plus 与 Sharding-JDBC 结合的底层执行逻辑,展示了 SQL 路由、改写及执行的完整过程,并补充了范围查询的实现方式及底层机制。在实际应用中,选择合适的拆分策略需要结合业务需求,确保数据分布均匀,并考虑事务一致性和查询优化等问题。
2025-03-03 16:08:41
2449
原创 MyBatis-Plus 条件构造器的使用(左匹配查询)
的基本使用方法、常见查询条件(如等于、不等于、大于、小于)以及如何使用 Lambda 表达式来构建动态查询和更新条件。可以与其他查询条件结合使用,构建更复杂的查询。例如,查询所有年龄大于 20 且名字以 “John” 开头的用户。你可以将它们与其他查询条件结合使用,构建更加灵活的查询。等查询条件,开发者可以轻松构建多种查询场景,满足复杂的业务需求。查询的变体)功能,帮助开发者更好地构建复杂的查询条件。来构建查询条件,提供了更好的类型安全。,结合起来,进行复杂的条件查询。,我们希望查询所有名字以。
2025-03-02 15:00:00
2475
原创 MyBatis-Plus 条件构造器的使用(一)
功能让开发者可以更加灵活和高效地构建数据库查询,同时提高代码的可读性和可维护性,避免了手写 SQL 时可能出现的错误。,开发者可以灵活地构建动态查询和更新条件。条件构造器使得 SQL 查询的构建更加简洁和易于维护。来构建查询条件,避免了手动拼接字符串或字段名的错误,提升了代码的类型安全性和可读性。是用于构建查询条件的构造器,它使得动态 SQL 查询的构建变得非常简洁和直观。提供了许多方法,允许开发者构建不同类型的查询条件。支持链式调用,可以通过多种方法构建复杂的查询条件。方法来构建多个条件的组合查询。
2025-03-02 10:00:00
1154
原创 MyBatis-Plus 分页查询(PageHelper)
是一个基于 MyBatis 的分页插件,它通过拦截器拦截 SQL 查询,自动为 SQL 增加分页信息。分页查询时,尽量避免查询过大的数据集,尤其是在高并发环境中。是另一个广泛使用的分页插件,它也能与 MyBatis-Plus 配合使用,提供更丰富的分页功能。,开发者能够在处理大数据量时,轻松实现高效的分页查询,提升应用的性能和用户体验。对象进行分页查询时,它会自动处理分页的参数(如页码、每页大小),并返回分页结果。在数据量较大时,可以考虑使用异步分页查询,减轻数据库的负载,并加快响应时间。
2025-03-01 15:00:00
4010
原创 MyBatis-Plus 逻辑删除实现
MyBatis-Plus 的逻辑删除功能简化了数据的删除操作,保留了删除记录的历史数据,确保了应用的数据一致性和安全性。通过合理配置和使用 MyBatis-Plus 的逻辑删除功能,开发者能够更加高效地管理数据,并满足业务需求。)的值,将记录标记为已删除,而不是将其从数据库中删除。MyBatis-Plus 会自动处理该字段的值,并在查询时自动排除已删除的记录。查询时,MyBatis-Plus 会自动过滤掉逻辑删除的记录。的方式,而不是物理删除。,表示该记录已被删除,而不是从数据库中删除该记录。
2025-03-01 10:00:00
2301
原创 MyBatis-Plus 自动填充功能
通过 MyBatis-Plus 提供的自动填充功能,开发者可以更加高效地进行数据处理,减少代码冗余,并确保系统字段的一致性和正确性。操作时,某些字段可以由 MyBatis-Plus 自动赋值,无需开发者手动提供。该功能可以在执行插入或更新操作时,自动为某些字段赋值,免去手动设置这些字段的麻烦。如果需要自定义填充规则,例如在创建时使用自定义的时间格式或设置特定的字段值,可以在。字段的自动填充,帮助开发者在处理数据时更加高效,减少人为错误。字段通常在数据更新时自动填充,记录数据最后一次修改的时间。
2025-02-28 11:31:18
1340
原创 MyBatis-Plus 高效增删改查操作原理
MyBatis-Plus 提供了强大的增删改查操作的功能,并通过简单的配置和条件构造器大大简化了 SQL 查询和数据库操作。N+1 查询问题是数据库性能优化中的常见问题,通常在进行多个查询时,每个查询都会生成一次 SQL,导致大量的查询开销。条件构造器在 MyBatis-Plus 中的作用非常重要,它允许开发者通过简单的链式调用来构造复杂的查询或更新条件。分页查询是大多数应用中常见的操作,MyBatis-Plus 提供了内置的分页插件,简化了分页操作。子句和总记录数的计算,简化了开发者的工作。
2025-02-28 11:27:33
1720
原创 MyBatis-Plus 常见错误与调试技巧
通过掌握这些常见错误的调试技巧和性能优化方法,开发者可以高效地排查问题并提升应用的性能,确保 MyBatis-Plus 在大规模数据处理场景中的高效运作。MyBatis-Plus 提供了简单的方式来查看执行的 SQL,启用 SQL 日志有助于调试和分析问题。参数可以输出 MyBatis 的执行过程,包括 SQL 语句、参数等,帮助开发者深入分析问题。分页查询能够有效避免全表扫描,尤其是在数据量较大的情况下,分页查询能显著提升性能。中配置,但如果配置错误,可能导致一些功能无法正常工作,例如分页插件未启用。
2025-02-28 11:21:48
1162
原创 为什么@Autowired 在属性上被警告,在 setter 方法上不被警告
在 Spring 开发中,@Autowired注解常用于实现依赖注入。它可以应用于类的或上。然而,当@Autowired注解在上使用时,IntelliJ IDEA 等 IDE 会给出的警告,而在上使用@Autowired时却不会出现这个警告。@Autowired当@Autowired注解应用于类的上时,Spring 会直接注入该属性,而不通过构造函数或 setter 方法显式地传递依赖项。这种注入方式称为IntelliJ IDEA 等 IDE 会根据这些设计缺点发出警告,提示@Autowired。
2025-02-27 16:15:14
1136
原创 MyBatis-Plus 对比传统 MyBatis 的优势
在现代的 Java 开发中,和都是流行的持久层框架。MyBatis 是一个轻量级的 ORM 框架,帮助开发者通过映射文件或注解方式来执行 SQL 操作。是在 MyBatis 基础上进行的增强,提供了许多简化和优化功能,使得开发者在使用时能更加高效。本文将对比和,并详细分析 MyBatis-Plus 提供的增强功能、性能优化以及它如何提升开发效率。SqlSessionMyBatis-Plus 是对 MyBatis 的扩展,提供了更高效的配置和操作方式,尤其在减少了大量重复代码的编写。saveremove。
2025-02-27 15:14:23
2473
原创 MyBatis-Plus 数据库配置与数据源整合
MyBatis-Plus 支持多数据源的配置和切换,具体可以通过配置不同的。通过合适的配置和管理,MyBatis-Plus 可以帮助开发者在 Spring Boot 应用中高效管理数据源、简化数据库操作,并根据需求实现更加复杂的数据库架构。只要在 Spring Boot 项目中配置好数据源,MyBatis-Plus 会自动进行配置,无需额外的手动配置。的常见方法,包括单数据源与多数据源的配置、配置文件与 Spring 配置类的使用、以及如何进行数据源切换和管理。中的配置自动进行数据源配置。
2025-02-27 15:08:09
986
chatgpt+cursor 开发微信小程序 文案提取F
2025-02-12
人工智能+FastAPI React Docker+车牌识别网站+开发教程
2025-02-10
ubuntu-chrome-安装包-版本 131
2025-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅