Spring Data之Example<>

简单CRUD之Example动态查询

简单介绍 (部分口水话,部分来自网络,代码永远自产)

使用过Spring全家桶的各位大佬应该都知道,Spring Data这个是Spring对持久层框架的封装,比如Spring Data Redis、Spring Data Mongo等,今天我们来学习一下他的动态查询Example

Example的官方介绍

Example是一个按照实列查询的技术,称为QBE,他允许我们创建动态的查询条件,持久层的框架我们常用的MyBatis的通用Mapper,Hibenate(好久没用过了),都支持这种映射关系,所以Spring Data也必须得支持这种提高效率的功能,

他可以实现我们不用写数据库的sql语句就可以查询到我们想要的数据,太复杂的除外...

Example 的组成

  • 条件实列:第一个当然就是我们封装条件的实列了,一般由前端发过来,我们可对其封装

  • ExampleMatcher:对于条件实列中某些字段的匹配条件的设置,比如包含,以...开始/结束等

  • Example:由条件实列和ExampleMatcher组成,用于查询

适用范围

  • 使用一组静态或者动态条件插叙数据库

  • 频繁重构域对象,而不必担心破坏现有查询

  • 独立于地测光输出储存IP工作(不明白)

按列查询(QBE)的限制

不支持嵌套或者分组的属性约束

仅支持字符串的开始/包含/结束/正则以及其他属性的精确匹配,也就是说对String类型的查询支持力度大

自产代码

上面这段代码我在其中的注释已经写的很明白,

我们对条件实列封装了是哪个条件,有两个是精确匹配,有一个单独设置了包含查询,

最后我们还对查询结果进行分页查询,条件匹配器的的API

 

而且在1.8y引入了Lamda表达式后,还进行了代码简化:

简单总结

对于Example可以快速构建一一个动态查询,并且根据Pageable可以快速实现分页插叙功能

Exampled对字符串支持的查询条件颇多,但对于其他类型,仅支持精确匹配

如果想要复杂一点的查询,我们还得继承另一个接口,用另一个API,今天先写到这儿,后面用到再写

posted @ 2019-08-07 23:42  鞋破露脚尖儿  阅读(2633)  评论(0编辑  收藏  举报