Bean Searcher:Java世界中的终极数据库查询解决方案
Bean Searcher 是 Java 生态中一颗冉冉升起的数据库查询新星,专注于高级查询的只读 ORM 框架。它通过一行代码就能实现包含分页、组合过滤、任意字段排序、统计、多表联查等复杂检索功能,为应用赋能高级查询能力。
🚀 为什么选择 Bean Searcher?
在传统的 Java 开发中,复杂的列表查询往往需要编写大量代码。无论是 MyBatis、Hibernate 还是 DataJDBC,在实现多条件、多表、分页、排序等复杂查询时,代码复杂度都非常高。而 Bean Searcher 在这一领域做出了重大突破!
惊人的开发效率提升
Bean Searcher 天生支持联表查询,免去 DTO/VO 转换的烦恼。只需要一行代码,你就能轻松实现高级查询功能,极大提高研发效率。
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 开发者工具箱中不可或缺的利器!
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust099- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00