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 开发者工具箱中不可或缺的利器!
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
jiuwenclawJiuwenClaw 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。Python0203- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
AtomGit城市坐标计划AtomGit 城市坐标计划开启!让开源有坐标,让城市有星火。致力于与城市合伙人共同构建并长期运营一个健康、活跃的本地开发者生态。01
awesome-zig一个关于 Zig 优秀库及资源的协作列表。Makefile00