Bean Searcher:简化复杂查询的利器

Bean Searcher 是一个能够简化复杂查询操作的工具,只需一行代码即可实现多表联查、分页搜索、任意字段组合过滤等功能。
clickgpt_line.png_noView
介绍

在你日常开发过程中,是否经常遇到这样的问题:复杂的列表查询需要写大量的代码?传统的ORM如Hibernate和MyBatis虽然在增删改方面表现出色,但在复杂查询时,代码往往又臭又长,维护起来也头疼。你可能会想,有没有一种工具可以简化这些繁琐的操作?今天,我就来给大家介绍一个神器——Bean Searcher

✨ 特性

Bean Searcher 拥有众多强大的特性,使得它在处理复杂查询时表现得得心应手:

  • 实体多表映射:支持多表联查,极大地简化了SQL查询的编写。
  • 动态字段运算符:灵活地进行字段条件筛选。
  • 分组聚合查询:支持复杂的分组和聚合操作。
  • Select | Where | From 子查询:轻松实现子查询。
  • 实体类嵌入参数:参数传递更方便。
  • 字段转换器:灵活处理字段转换。
  • Sql 拦截器:可以对SQL执行进行拦截和修改。
  • 数据库 Dialect 扩展:支持多种数据库方言。
  • 多数据源与动态数据源:方便处理多数据源的应用场景。
  • 注解缺省与自定义:灵活的注解配置。
  • 字段运算符扩展:可以自定义扩展字段运算符。

⁉️ 为什么用

这绝不是一个重复的轮子。虽然增删改是Hibernate、MyBatis、Data-JDBC等ORM的强项,但在查询,特别是多条件、联表、分页、排序的复杂列表查询上,它们往往显得力不从心。而Bean Searcher在这方面下足了功夫,这些复杂的查询,只需一行代码便可以轻松实现。

例如,这样的一个典型需求:

后端需要写一个检索接口,而如果用传统的ORM来写,代码之复杂是可以想象的。而Bean Searcher却可以轻松解决这个问题。

💥 只一行代码实现以上功能

首先,我们需要有一个实体类:

    
@SearchBean(tables="user u, role r", joinCond="u.role_id = r.id", autoMapTo="u")
public class User {
  private long id;
  private String username;
  private int status;
  private int age;
  private String gender;
  private Date joinDate;
  private int roleId;
  @DbField("r.name")
  private String roleName;
  // Getters and setters...
}

然后你就可以用一行代码实现这个用户检索接口:

    
@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private BeanSearcher beanSearcher;              // 注入 BeanSearcher 的检索器

    @GetMapping("/index")
    public SearchResult<User> index(HttpServletRequest request) {
        // 这里只写一行代码
        return beanSearcher.search(User.class, MapUtils.flat(request.getParameterMap()), new String[]{ "age" });
    }
}

这一行代码实现了以下功能:

  • 多表联查
  • 分页搜索
  • 组合过滤
  • 任意字段排序
  • 字段统计

性能如何?

你可能会问,这样的工具性能如何?直接说一骑绝尘你可能觉得是 Tree New Bee,还是看报告好了。

要我说啊,如果你还在为复杂的查询代码烦恼,不妨试试Bean Searcher。它不仅能大大减少你的代码量,还能提升开发效率,让你把更多的时间花在更有趣的事情上。还等什么,赶快下载试试吧!

编程学习
编程学习 免费领取编程学习资料 进编程学习交流群
订阅号
视频号
公众号 关注公众号,回复关键字java领取大厂最新面试题
×
编程学习
免费领取编程学习资料 进编程学习交流群