首页
/ Bean Searcher:Java世界中的终极数据库查询解决方案

Bean Searcher:Java世界中的终极数据库查询解决方案

2026-01-14 18:25:56作者:羿妍玫Ivan

Bean Searcher 是 Java 生态中一颗冉冉升起的数据库查询新星,专注于高级查询的只读 ORM 框架。它通过一行代码就能实现包含分页、组合过滤、任意字段排序、统计、多表联查等复杂检索功能,为应用赋能高级查询能力。

🚀 为什么选择 Bean Searcher?

在传统的 Java 开发中,复杂的列表查询往往需要编写大量代码。无论是 MyBatis、Hibernate 还是 DataJDBC,在实现多条件、多表、分页、排序等复杂查询时,代码复杂度都非常高。而 Bean Searcher 在这一领域做出了重大突破!

惊人的开发效率提升

Bean Searcher 天生支持联表查询,免去 DTO/VO 转换的烦恼。只需要一行代码,你就能轻松实现高级查询功能,极大提高研发效率。

Bean Searcher 架构设计 Bean Searcher 核心架构图展示了从输入参数到数据输出的完整处理流程

💡 核心功能亮点

一行代码实现复杂查询

想象这样一个典型的需求场景:前端需要一个包含用户名、角色、状态等多字段的检索界面,每个字段都支持不同的检索方式(如模糊匹配、多值范围等)。使用传统 ORM 实现这样的功能,代码复杂度极高,但 Bean Searcher 可以轻松应对!

前端检索界面示例 典型的前端检索界面,Bean Searcher 完美支持此类复杂查询需求

强大的检索能力

  • 多表联查:支持从多个表中检索数据
  • 任意字段分页:可按任意字段进行分页处理
  • 组合过滤:支持多条件的组合过滤
  • 任意字段排序:支持按任意字段进行排序
  • 字段统计:支持多字段的统计功能
  • 直接返回 VO:无需额外的 DTO 转换

灵活的参数构建器

Bean Searcher 提供了强大的参数构建器,让你能够以类型安全的方式构建复杂的查询参数:

Map<String, Object> params = MapUtils.builder()
        .selectExclude(User::getJoinDate)                 // 排除 joinDate 字段
        .field(User::getStatus, 1)                        // 过滤条件:status = 1
        .field(User::getName, "Jack").ic()                // 过滤条件:name = 'Jack'(忽略大小写)
        .field(User::getAge, 20, 30).op(Operator.Between) // 过滤条件:age 在 20 到 30 之间
        .orderBy(User::getAge, "asc")                     // 按 age 升序排序
        .page(0, 15)                                      // 分页:第0页,每页15条
        .build();

🌟 性能优势

相较于 MyBatis、Hibernate 等传统 ORM,Bean Searcher 拥有数倍的运行时性能提升。这得益于其优化的架构设计和高效的 SQL 生成机制。

🔧 轻松集成

SpringBoot / Grails 集成

只需要添加一个依赖:

implementation 'cn.zhxu:bean-searcher-boot-stater:4.3.0'

然后就可以在 Controller 或 Service 中注入 Searcher:

@Autowired
private MapSearcher mapSearcher;      // 注入 MapSearcher,检索数据为 Map 对象
@Autowired
private BeanSearcher beanSearcher;   // 注入 BeanSearcher,检索数据为泛型对象

Solon 项目集成

implementation 'cn.zhxu:bean-searcher-solon-plugin:4.3.0'

其他框架集成

对于其他框架,Bean Searcher 同样提供灵活的集成方式:

DataSource dataSource = ...     // 获取应用的数据源

// DefaultSqlExecutor 支持多数据源
SqlExecutor sqlExecutor = new DefaultSqlExecutor(dataSource);

// 构建 MapSearcher
MapSearcher mapSearcher = SearcherBuilder.mapSearcher()
        .sqlExecutor(sqlExecutor)
        .build();

// 构建 BeanSearcher  
BeanSearcher beanSearcher = SearcherBuilder.beanSearcher()
        .sqlExecutor(sqlExecutor)
        .build();

🛡️ 安全特性

Bean Searcher 内置了多重安全机制:

  • 防 SQL 注入:自动处理参数安全
  • 防大页查询:限制分页大小
  • 防深度拉取:防止数据过量加载

这些安全机制默认启用,能够有效杜绝无意识的安全隐患。

🔨 高度可扩展

你可以自定义和扩展 Bean Searcher 中的任何组件。例如:

  • 自定义 FieldOp 来支持其他字段操作符
  • 自定义 DbMapping 来支持其他 ORM 的注解
  • 自定义 ParamResolver 来支持 JSON 查询参数
  • 自定义 FieldConvertor 来支持任何类型的字段转换
  • 自定义 Dialect 来支持更多数据库

灵活检索方式配置 Bean Searcher 对前端灵活检索方式的支持,体现了其高度可定制性

🎯 总结

Bean Searcher 不仅仅是传统 ORM 的替代品,它重新定义了 Java 数据库查询的方式。通过简化复杂查询的实现,大幅提升开发效率,同时保持优秀的运行时性能。

无论你是正在寻找更高效的数据库查询方案,还是希望简化现有项目的查询代码,Bean Searcher 都值得你深入了解和尝试。它正在成为 Java 开发者工具箱中不可或缺的利器!

登录后查看全文
热门项目推荐
相关项目推荐