5 按示例查询(QueryByExample,QBE)

1 QBE查询 

按示例查询(QBE)是一种用户友好的查询技术,具有简单的接口。它允许动态查询创建,并且不需要编写包含字段名称的查询。

2 查询示例

 2.1 QBE 查询的三个部分

从上面的代码可以看出,QBE包括三个部分

(1)Probe:实体对象,在持久化框架中与Table对应的域对象,一个对象代表数据库表中的一条记录

(2)ExampleMatcher:匹配器,它是匹配“实体对象”的,表示了如何使用“实体对象”中的“值”进行查询,它代表的是“查询方式”,解释了如何去查的问题。

(3)实例对象,代表的是完整的查询条件。由实体对象(查询条件值)和匹配器(查询方式)共同创建。

2.1.1 实体对象(查询条件值)

如上例中Customer对象。在构建查询条件时,一个实体对象代表的是查询条件中的“数值”部分。如:要查询姓“Jack”的客户,实体对象只能存储条件值“Jack”。

一个具有部分属性值的实例对象:

2.1.2 匹配器(查询对象)

解释了如何去查的问题。如,要查询姓“刘”的客户,即姓名以“刘”开头的客户,该对象就表示了“以某某开头的”这个查询方式,如上例中:withMatcher("name", GenericPropertyMatchers.startsWith())。

关键属性分析,即如何配置匹配器

(1)nullHandler:Null值处理方式,枚举类型,有2个可选值:

  • INCLUDE(包括)
  • IGNORE(忽略)

Null值处理方式:默认值是IGNORE(忽略),即当条件值为null时,则忽略此过滤条件,一般业务也是采用这种方式就可满足。当需要查询数据库表中属性为null的记录时,可将值设为INCLUDE,这时,对于不需要参与查询的属性,都必须添加到忽略列表
(ignoredPaths)中,否则会出现查不到数据的情况。

(2)defaultStringMatcher:默认字符串匹配方式,枚举类型,有6个可选值:

  • DEFAULT(默认,效果同EXACT)
  • EXACT(相等)
  • STARTING(开始匹配)
  • ENDING(结束匹配)
  • CONTAINING(包含,模糊匹配)
  • REGEX(正则表达式)

(3)defaultIgnoreCase:默认大小写忽略方式,布尔型,当值为false时,即不忽略,大小不相等。该配置对所有字符串属性过滤有效

(4)propertySpecifiers:各属性特定查询方式,描述了各个属性单独定义的查询方式,每个查询方式中包含4个元素:属性名、字符串匹配方式、大小写忽略方式、属性转换器。如果属性未单独定义查询方式,或单独查询方式中,某个元素未定义(如:字符串匹配方式),则采用ExampleMatcher中定义的默认值,即上面介绍的defaultStringMatcher和defaultIgnoreCase的值。

默认配置和特殊配置混合使用:默认创建匹配器时,字符串采用的是精确匹配、不忽略大小写,可以通过操作方法改变这种默认匹配,以满足大多数查询条件的需要,如将“字符串匹配方式”改为CONTAINING(包含,模糊匹配),这是比较常用的情况。对于个别属性需要特定的查询方式,可以通过配置“属性特定查询方式”来满足要求,设置propertySpecifiers的值即可。

(5)ignoredPaths:忽略属性列表,忽略的属性不参与查询过滤。某些字段里面有值或者设置了其他匹配规则,只要放在ignoredPaths中,就会忽略此字段的,不作为过滤条件。

2.3 实例对象

 Example由探针和ExampleMatcher组成。它用于创建查询。

3 实际使用示例说明

3.1 无匹配情况

要求:查询地址是“河南省郑州市”,且重点关注的客户。

3.2 多种条件组合

要求:根据姓名、地址、备注进行模糊查询,忽略大小写,地址要求开始匹配。

3.3 多级查询 

要求:查询所有潜在客户。

3.4 查询Null值  

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值