您现在的位置是:首页 > 编程 > 

这逆天的框架!一行代码竟超越Hibernate、MyBatis等一众框架100倍!

2025-07-25 10:52:15
这逆天的框架!一行代码竟超越Hibernate、MyBatis等一众框架100倍! 前言在后端与数据库交互中,hibernate 和 mybatis、data-jdbc 等等 ORM 是我们经常会选用的技术框架!这些ORM框架,在增、删、改上都提供了快捷、方便的操作。但是,他们都有一个弱项,那就是查询的功能!传统的 ORM 都很难用较少的代码实现一个复杂的列表检索。今天,我们要分享的是一个专注高级

这逆天的框架!一行代码竟超越Hibernate、MyBatis等一众框架100倍!

前言

在后端与数据库交互中,hibernate 和 mybatis、data-jdbc 等等 ORM 是我们经常会选用的技术框架!

这些ORM框架,在上都提供了快捷、方便的操作。但是,他们都有一个弱项,那就是查询的功能!

传统的 ORM 都很难用较少的代码实现一个复杂的列表检索。

今天,我们要分享的是一个专注高级查询的只读 ORM 框架:Bean Searcher

Bean Searcher简介

Bean Searcher 绝对不是一个重复的 ORM 轮子。因为从未有过一个功能复杂的检索接口可以简单的只剩一行代码。

Bean Searcher 是一个基于 Java 的只读 ORM 框架,可以一行代码实现复杂的列表检索功能,支持分页、组合过滤、排序、统计、多表联查等。适合开发效率高、性能要求高的项目。

相较于 MyBatis、Hibernate 等传统 ORM,Bean Searcher检索引擎拥有数倍的运行时性能提升。

Bean Searcher特性

  • 支持 实体多表映射
  • 支持 动态字段运算符
  • 支持 分组聚合 查询
  • 支持 Select | Where | From 子查询
  • 支持 实体类嵌入参数
  • 支持 字段转换器
  • 支持 Sql
  • 支持 数据库 Dialect 扩展
  • 支持 多数据源 与 动态数据源
  • 支持 注解缺省 与 自定义
  • 支持 字段运算符 扩展
  • 等等

Bean Searcher 安装和使用

这里举个例子。

你得到这样一个需求,还附带了如下功能:

  • 各种复杂条件组合过滤
  • 年龄统计(支持多字段统计)
  • 任意字段后端排序(点击表头)
  • 分页查询功能
  • 总条数统计

如果使用 Mybatis 或 Hibernate,这代码至少100+以上了吧!

但使用 Bean Searcher,只需 一行代码便可实现上述要求!!!我们一起来看!

安装

这里选用的是 Maven 构建的方式,在Spring Boot中集成使用。

代码语言:javascript代码运行次数:0运行复制
<!-- SpringBoot / Grails 的项目直接使用以下依赖,更为方便(只添加这一个依赖即可) -->
<dependency>
    <groupId>cn.zhxu</groupId>
    <artifactId>bean-searcher-boot-starter</artifactId>
    <version>4..</version>
</dependency>

功能代码实现

重点就一句:searcher.search(xxx)。不信?请看代码!

代码语言:javascript代码运行次数:0运行复制
@RestController
public class DemoController {

    @Autowired
    private Searcher searcher;
    
    /**
     * 列表检索接口
     */
    @GetMapping("/employee/index")
    public Object index(HttpServletRequest request) {
        // 组合检索、排序、分页 和 统计 都在这一句代码中实现了
        return searcher.search(,              // 指定实体类
                MapUtils.flat(request.getParameterMap()),   // 收集页面请求参数
                new String[] { "age" });                    // 统计字段:年龄
    }

}

细心的同学会发现在上述代码里用到一个 Employee 这个类。没错,它就是用来告诉 bean-searcher 如何与数据库字段映射的一个实体类,并且特别重要!

代码语言:javascript代码运行次数:0运行复制
@SearchBean(
    tables = "employee e, department d",  // 员工表 与 部门表
    joinCond = "e.department_id = d.id"   // 连接条件
)
public class Employee {

    @DbField("e.id")
    private Long id;

    @DbField("")
    private String name;

    @DbField("e.age")
    private Integer age;

    @DbField("")
    private String department;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @DbField("_date")
    private Date entryDate;

    // Getter and Setter ...
}

功能拆解

就上面这一个接口,就能支持多种查询方式:

  • (1)无参请求:GET /employee/index
  • (2)分页请求(page | size) GET /employee/index? page=2 & size=10
  • ()数据排序(sort | order) GET /employee/index? sort=age & order=desc
  • (4)指定(排除)字段(onlySelect | selectExclude) GET /employee/index? onlySelect=id,name GET /employee/index? selectExclude=age
  • (5)字段过滤( [field]-op=eq ) GET /employee/index? age=20 GET /employee/index? age=20 & age-op=eq
  • (6)字段过滤( [field]-op=ne ) GET /employee/index? age=20 & age-op=ne
  • (7)字段过滤( [field]-op=ge ) GET /employee/index? age=20 & age-op=ge
  • (8)字段过滤( [field]-op=le ) GET /employee/index? age=20 & age-op=le
  • (9)忽略大小写( [field]-ic=true ) GET /employee/index? name=Jack & name-ic=true

另外还有其他各种字段过滤方式,这里就不细说了。大家看文末的官方地址查阅。

小结

使用 Bean Searcher 可以极大地节省后端的复杂列表检索接口的开发时间!普通的复杂列表查询只需一行代码。

单表检索可复用原有 Domain,无需定义 SearchBean。

Bean Searcher可以和任意 Java Web 框架集成,如:SpringBoot、Spring MVC、Grails、Jfinal 等等。

此外,Bean Searcher扩展性很强。用户可自定义扩展 Bean Searcher 中的任何组件!你可以:

  • 自定义 FieldOp 来支持更多的字段运算符
  • 自定义 FieldConvertor 来支持任意的 特殊字段类型
  • 自定义 DbMapping 来实现自定义注解,或让 Bean Searcher 识别其它 ORM 的注解
  • 自定义 ParamResolver 来支持其它形式的检索参数
  • 自定义 Dialect 来支持更多的数据库
  • 等等..

上就有自定义的例子,大家可以查阅。

/

GitHub源码

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2024-10-10,如有侵权请联系 cloudcommunity@tencent 删除统计数据库mybatishibernate框架

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1171253.html

相关标签:无
上传时间: 2025-07-21 08:39:44
留言与评论(共有 16 条评论)
本站网友 广东省长
18分钟前 发表
因为从未有过一个功能复杂的检索接口可以简单的只剩一行代码
本站网友 最新楼盘
21分钟前 发表
代码语言:javascript代码运行次数:0运行复制<!-- SpringBoot / Grails 的项目直接使用以下依赖
本站网友 金沙江水电开发
2分钟前 发表
在增
本站网友 透明售房网杭州
5分钟前 发表
不信?请看代码!代码语言:javascript代码运行次数:0运行复制@RestController public class DemoController { @Autowired private Searcher searcher; /** * 列表检索接口 */ @GetMapping("/employee/index") public Object index(HttpServletRequest request) { // 组合检索
本站网友 眼角去皱纹
9分钟前 发表
大家看文末的官方地址查阅
本站网友 当天金融
19分钟前 发表
我们要分享的是一个专注高级查询的只读 ORM 框架:Bean Searcher
本站网友 3399
5分钟前 发表
mm"
本站网友 皮肤美白
20分钟前 发表
Bean Searcher 是一个基于 Java 的只读 ORM 框架
本站网友 长洲未来
7分钟前 发表
Jfinal 等等
本站网友 零陵二手房
12分钟前 发表
name GET /employee/index? selectExclude=age(5)字段过滤( [field]-op=eq ) GET /employee/index? age=20 GET /employee/index? age=20 & age-op=eq(6)字段过滤( [field]-op=ne ) GET /employee/index? age=20 & age-op=ne(7)字段过滤( [field]-op=ge ) GET /employee/index? age=20 & age-op=ge(8)字段过滤( [field]-op=le ) GET /employee/index? age=20 & age-op=le(9)忽略大小写( [field]-ic=true ) GET /employee/index? name=Jack & name-ic=true另外还有其他各种字段过滤方式
本站网友 虫草花的功效
16分钟前 发表
可以一行代码实现复杂的列表检索功能
本站网友 市政基础设施
0秒前 发表
Bean Searcher检索引擎拥有数倍的运行时性能提升
本站网友 丹麦女孩
6分钟前 发表
我们要分享的是一个专注高级查询的只读 ORM 框架:Bean Searcher
本站网友 海拉尔美食
26分钟前 发表
更为方便(只添加这一个依赖即可) --> <dependency> <groupId>cn.zhxu</groupId> <artifactId>bean-searcher-boot-starter</artifactId> <version>4..</version> </dependency> 功能代码实现重点就一句
本站网友 本巴恩斯
1分钟前 发表
如:SpringBoot