超好用的数据库检索工具介绍——Bean Searcher

一、介绍

 Bean Searcher与我们常用的mybatis、tk等有类似之处,但也有区别,具体如下:相同点:* 都是orm框架* 都用于查询数据不同点:* Bean Searcher只用于查询* 且简洁高效* 能轻松完成众多复杂查询

具体查看官网就行:Bean Searcher官网

举个例子:
我们要实现一个用户查询的功能
这个查询有点复杂,它的要求如下:

可按用户名字段查询,要求: 可精确匹配(等于某个值) 可全模糊匹配(包含给定的值) 可后模糊查询(以...开头) 可前模糊查询(以.. 结尾) 可指定以上四种匹配是否可以忽略大小写
可按年龄字段查询,要求: 可精确匹配(等于某个年龄) 可大于匹配(大于某个值) 可小于匹配(小于某个值) 可区间匹配(某个区间范围)
可按角色ID查询,要求:精确匹配
可按用户ID查询,要求:同年龄字段
可指定只输出哪些列(例如,只查询 ID 与 用户名 列)
支持分页(每次查询后,页面都要显示满足条件的用户总数)
查询时可选择按 ID、用户名、年龄 等任意字段排序

试想一下,对于这种要求的查询,后端接口里的代码如果用 mybatis、hibernate、data-jdbc 直接来写的话,100 行代码 能实现吗?

面对这种需求后端如何 只用一行代码搞定 吧(有兴趣的同学可以 mybatis 等写个试试,最后可以对比一下)

Bean Searcher只一行代码实现以上需求,它就是专门来对付这种列表检索的,无论简单的还是复杂的,统统一行代码搞定!而且它还非常轻量,Jar 包体积仅不到 100KB,无第三方依赖。

介绍先到这!!!

二、使用

1.导入依赖

spring项目导入以下依赖:

<dependency><groupId>com.ejlchina</groupId><artifactId>bean-searcher</artifactId><version>3.7.1</version>
</dependency>

springboot直接导入以下依赖:

<dependency><groupId>com.ejlchina</groupId><artifactId>bean-searcher-boot-starter</artifactId><version>3.7.1</version>
</dependency>

2.注入对象
在你的controller或者service注入base searcher的对象

 /*** 注入 Map 检索器,它检索出来的数据以 Map 对象呈现*/@Autowiredprivate MapSearcher mapSearcher;/*** 注入 Bean 检索器,它检索出来的数据以 泛型 对象呈现*/@Autowiredprivate BeanSearcher beanSearcher;

共同拥有的方法#

  • searchCount(Class beanClass, Map<String, Object> params): Number 查询指定条件下的数据 总条数
  • searchSum(Class beanClass, Map<String, Object> params, String field): Number 查询指定条件下的 某字段 的 统计值
  • searchSum(Class beanClass, Map<String, Object> params, String[] fields): Number[] 查询指定条件下的 多字段 的 统计值
    检索参数 params 是一个条件集合,包含字段过滤、分页、排序 等参数

只在 MapSearcher 内的方法#

  • search(Class beanClass, Map<String, Object> params): SearchResult<Map<String, Object>> 分页 查询指定条件下数据 列表 与 总条数
  • search(Class beanClass, Map<String, Object> params, String[] summaryFields): SearchResult<Map<String, Object>> 同上 + 多字段 统计
  • searchFirst(Class beanClass, Map<String, Object> params): Map<String, Object> 查询指定条件下的 第一条 数据
  • searchList(Class beanClass, Map<String, Object> params): List<Map<String, Object>> 分页 查询指定条件下数据 列表
  • searchAll(Class beanClass, Map<String, Object> params): List<Map<String, Object>> 查询指定条件下 所有 数据 列表
    以上方法的查询出的单条数据都以 Map 对象呈现

只在 BeanSearcher 内的方法#

  • search(Class beanClass, Map<String, Object> params): SearchResult 分页 查询指定条件下数据 列表 与 总条数
  • search(Class beanClass, Map<String, Object> params, String[] summaryFields): SearchResult 同上 + 多字段 统计
  • searchFirst(Class beanClass, Map<String, Object> params): T 查询指定条件下的 第一条 数据
  • searchList(Class beanClass, Map<String, Object> params): List 分页 查询指定条件下数据 列表
  • searchAll(Class beanClass, Map<String, Object> params): List 查询指定条件下 所有 数据 列表

三、查询

比如你已经有如下的实体:

public class User {             // 默认映射到 user 表private Long id;            // 默认映射到 id 字段private String name;        // 默认映射到 name 字段private int age;            // 默认映射到 age 字段// Getter and Setter ...
}

开始检索

有了实体类后,接下来我们便用 MapSearcher 的 search(Class beanClass, Map<String, Object> params): SearchResult<Map<String, Object>> 方法来体验一下如何 只用一行代码 实现一个检索接口,代码如下:

@RestController
@RequestMapping("/user")
public class UserController {@Autowiredprivate MapSearcher mapSearcher;              // 注入 BeanSearcher 的检索器@GetMapping("/index")public SearchResult<Map<String, Object>> index(HttpServletRequest request) {// 一行代码,实现一个用户检索接口(MapUtils.flat 只是收集前端的请求参数)return mapSearcher.search(User.class, MapUtils.flat(request.getParameterMap()));}
}

代码解析

上面的 MapUtils 是 Bean Searcher 提供的一个工具类,MapUtils.flat(request.getParameterMap()) 只是为了把前端传来的请求参数统一收集起来,然后剩下的,就全部交给 MapSearcher 检索器了。
当然不直接从 request 里取参数也是可以的,只是代码这么写看起来比较简洁。

上面的代码,实现了一个 /user/index 接口,它的方法体里真的只有一行代码,但这个接口能支持哪些请求参数呢?不同的请求参数又能输出怎样的结果呢,接下来让我们来简单列举一下:

(1)无参请求

  • GET /user/index
  • 返回结果:
{"dataList": [           // 用户列表,默认返回第 1 页,默认分页大小为 15 (可配置){ "id": 1, "name": "Jack", "age": 25 },,,],"totalCount": 100       // 用户总数
}

(1)无参请求

  • GET /user/index
  • 返回结果:
{"dataList": [           // 用户列表,默认返回第 1 页,默认分页大小为 15 (可配置){ "id": 1, "name": "Jack", "age": 25 },,,],"totalCount": 100       // 用户总数
}

(2)分页请求(page | size)

  • GET /user/index? page=2 & size=10
  • 返回结果:结构同 (1)(只是每页 10 条,返回第 2 页)
TIP参数名 size 和 page 可自定义, page 默认从 0 开始,同样可自定义,并且可与其它参数组合使用

(3)数据排序(sort | order)

  • GET /user/index? sort=age & order=desc
  • 返回结果:结构同 (1)(只是 dataList 数据列表以 age 字段降序输出)
TIP参数名 sort 和 order 可自定义,可和其它参数组合使用

(4)指定(排除)字段(onlySelect | selectExclude)

  • GET /user/index? onlySelect=id,name
  • GET /user/index? selectExclude=age
  • 返回结果:( dataList 数据列表只含 id 与 name 字段)
{"dataList": [           // 用户列表,默认返回第 1 页(只包含 id 和 name 字段){ "id": 1, "name": "Jack" },,,],"totalCount": 100       // 用户总数
}

(5)字段过滤( [field]-op=eq )

  • GET /user/index? age=20
  • GET /user/index? age=20 & age-op=eq
  • 返回结果:
TIP参数 age-op=eq 表示 age 的 字段运算符 是 eq(Equal 的缩写),表示参数 age 与参数值 20 之间的关系是 Equal,由于 Equal 是一个默认的关系,所以 age-op=eq 也可以省略参数名 age-op 的后缀 -op 可自定义,且可与其它字段参数 和 上文所列的参数(分页、排序、指定字段)组合使用,下文所列的字段参数也是一样,不再复述。

(6)等等等…

四、进阶

查看官网吧,太多了,写累了。官网

超好用的数据库检索工具介绍——Bean Searcher相关推荐

  1. 关于论文数据库检索的介绍

    科技论文写作以及学位论文过程中,为了解当前国内外研究现状.确定研究方向,我们需要对论文数据库检索.俗话说好的开始是成功的一半,如果在检索时选择了正确的数据库,使用了正确的检索技术,那么以后的研究工作可 ...

  2. 数据库版本控制工具介绍

    Source Safe for SQL Server 网址:http://www.grqsh.com/products.htm?tab=sourcesafe-for-sql-server Source ...

  3. iframe关闭时触发事件_超详细的mysql数据库事件--定时任务介绍及日常管理

    概述 由于最近在做某些日志表的清理工作,会用到定时任务,所以这里也简单介绍一下mysql如何用事件来实现定时任务. 后面会介绍两个日志表清理实现方案,一种是传统的定时delete,另一种会稍微复杂点, ...

  4. oracle的 客户端工具,Oracle SQL Handler下载-Oracle数据库客户端工具5.2 官方版-东坡下载...

    Oracle数据库客户端工具是一款非常好用的Oracle数据库客户端工具.有了它,用户可以轻松导出各种数据,操作简单,使用方便,占用资源少.有这方面需要的朋友可以来下载试试! Oracle数据库客户端 ...

  5. ExcelPatternTool: Excel表格-数据库互导工具

    ExcelPatternTool Excel表格-数据库互导工具 介绍: 指定Pattern文件-一个规则描述的json文档,基于此规则实现Excel表格与数据库之间的导入导出,校验等功能. 特点: ...

  6. MySQL数据库中导入导出方法以及工具介绍

    MySQL数据库中导入导出方法以及工具介绍 1.MySQLimport的语法介绍: mysqlimport位于mysql/bin目录中,是mysql的一个载入(或者说导入)数据的一个非常有效的工具.这 ...

  7. 【数据库】GaussDB客户端工具介绍

    文章目录 前言 一.客户端工具介绍 二.zsql安装 三.gsql 四.Data Studio 前言 这次我们来看GaussDB的一些客户端工具,帮助我们更好的操作数据库 一.客户端工具介绍 客户端工 ...

  8. MySQL数据库卸载+MySQL常用的图形化管理工具介绍

    MySQL数据库卸载 我们为什么需要卸载MySQL呢?可能是因为安装的时候安装出错,也可能是因为版本过低,导致一些问题没办法进行解决,所以需要卸载MySQL,重新安装最新版的MySQL. 第一步:停止 ...

  9. 达梦数据库DM8-DM管理工具介绍和简单使用

    达梦数据库DM8-DM管理工具介绍和简单使用 系列文章目录 本文环境 1.DM管理工具介绍 2.DM管理工具简单使用 1.打开DM管理工具 2.数据库连接 3.DM管理工具常用功能介绍 系列文章目录 ...

最新文章

  1. java 解释型和编译型
  2. OpenKruise:解放 DaemonSet 运维之路
  3. 3 CSS 高级语法
  4. TensorFlow入门:第一个机器学习Demo
  5. 推荐系统(工程方向)-策略平台
  6. 突破100万年薪《多线程服务器端架构》
  7. bat文件名操作_Excel按文件名制作目录,你复制粘贴花一小时,同事只要十秒搞定...
  8. C#反射基础理解1(转)
  9. MP 启动注入 SQL 原理分析
  10. Facebook图片存储架构技术全解析
  11. 终于明白如何去写原生AJAX
  12. 计算机网络:overlay(VLAN,VxLAN)、underlay网络、大二层的介绍
  13. mysql5.7.17完全卸载_MySQL5.7完全卸载步骤详解
  14. Android版LGame框架发布预告
  15. wordpress主题实现彩色标签云效果
  16. 螺旋模型、喷泉模型、增量模型的特点
  17. 【c++】Lanelet2 Examples笔记(一)
  18. Matplotlib双y轴+调整图例位置
  19. SETi的Violeds技术解决方案可帮助阻止德尔塔变异病毒的传播
  20. VMware workstation搭建华为FusionCompute实验环境(二)保姆级安装教程,可运行虚拟机

热门文章

  1. 旅游必备的十款热门APP
  2. perceptivepixel PPI 55触摸屏初步测试结果
  3. 讨论线路板的制作-使用电子模块与自己设计线路板的区别
  4. java三角形代码,Java编程实现帕斯卡三角形代码示例
  5. 算法与数据结构学习(8)-双向链表分析
  6. JavaScript基础系列之五 浏览器
  7. 设计软件调节CPU使用率及更改优先级
  8. 【走进php内核】之 线程安全(ZTS)
  9. 学.Net开发技术 高薪就业就是这么容易
  10. SQL Server 2008 R2 下载 序列号