今天给大家介绍一个框架引擎,可能会让你在使用MyBatis时的效率提高个、十、百,对,提高100倍这么多!
Bean Searcher
Bean Searcher是一个专注高级查询的只读ORM,天生支持联表,免 DTO/VO 转换,只要使用得当,一行代码实现复杂列表检索将会成为可能,不再是梦想~

截止目前为止,Bean Searcher主要支持的特点有:
- 支持 Select | Where | From 子查询
其架构图详解如下:

更简单直接的说,Bean Searcher就是一个轻量级的数据库条件检索引擎,其作用是从已有的数据库表中检索数据,最终目的是为了减少后端模板代码的开发,极大提高开发效率,节省开发时间。
当然,TJ君的理解是,Bean Searcher并不是单纯的为了替换MyBatis,而是在最合适它的场景下让用户的使用更便捷更高效。
例如一些非事务性的动态检索场景,就是非常适合Bean Searcher的发挥,就好比管理后台的用户管理等检索场景,实际运作中是不会向数据库中插入数据的,并且其检索条件是动态的,用户检索方式不同,执行的SQL也不同,就比较适合Bean Searcher了。
如果小伙伴再深入使用一段时间,除了之前说的那些特点,你会发现Bean Searcher可能还有这些优点:
轻松实现高级查询,且无需 DTO/VO 转换, 极大提高后端研发效率
可以和任意 Java Web 框架集成,如:SpringBoot、Grails、Jfinal 等
面向接口设计,用户可自定义扩展 Bean Searcher 中的任何组件
约定优于配置,可省略注解,可复用原有域类,同时支持自定义注解
支持 Select 指定字段 同一个实体类,可指定只 Select 其中的某些字段,或排除某些字段
支持添加多个参数过滤器,可自定义参数过滤规则
支持添加多个字段转换器,可自定义数据库字段到实体类字段的转换规则
支持添加多个 SQL 拦截器,可自定义 SQL 生成规则
最后,我们可以看下Bean Searcher 最简单的一行代码示例:
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private BeanSearcher searcher; // 注入 Bean Searcher 的检索器
@GetMapping("/index")
public SearchResult<User> index(HttpServletRequest request) {
// 只一行代码,实现包含 分页、组合过滤、任意字段排序、甚至统计、多表联查的 复杂检索功能
return searcher.search(User.class, MapUtils.flat(request.getParameterMap()));
}
}
觉得不错的小伙伴,不妨来试试看哦!
另外,我们将之前发过的各种项目及工具进行了整理,收录到了GitHub项目,欢迎各位小伙伴光临Star,地址如下:https://github.com/Wechat-TJ/TJ-WORLD-FORU
点击下方卡片,关注公众号“TJ君”
回复“BS2022”,获取仓库地址
关注我,每天了解一个牛x、好用、有趣的东东
往期推荐