在
上一章节
中,我们已经初步认识了SqlEngine中有关查询的方法及其写法。
如
getPage
和
getSort
基础配参项等等。
而在本章中,我们将更加深入去学习和了解有关
复杂where
条件的写法。
select Condition:Part B
首先,我们先来认识一下为我们提供对应服务的where家族的小伙伴们
-
getWhere
And
-
getWhere
Or
-
getWhere
AndMore
-
getWhere
AndMoreEnd
-
getWhere
OrMore
-
getWhere
OrMoreEnd
以上几个方法的入参项一致均为:(String
key
,String
condition
,Object
val
)
key:查询字段
condition:匹配类型
val:检索值
目前,condition字段共支持以下12种查询条件
EQ(" = "),//等于
LIKE(" LIKE "),//模糊查询
GT(" > "),//大于
GTEQ(" >= "),//大于等于
LT(" < "),//小于
LTEQ(" <= "),//小于等于
NEQ(" <> "),//不等于
IN(" IN "),//包含
NOTIN(" NOT IN "),//不包含
ISNULL(" IS NULL "),//为空
NOTNULL(" IS NOT NULL "),//不为空
BET(" BETWEEN ");//在……区间,Between and……
多余的我就不做赘述了,而对于前面两个方法,小伙伴们应该都不陌生了吧?
getWhere
And
:以
AND
方式拼装指定自定义查询条件
原型:
select * from where 1=1 and key condition value
示例(like):
select * from where 1=1 and name like '%张%'
getWhere
And
:以
OR
方式拼装指定自定义查询条件
原型:
select * from where 1=1 or key condition value
示例(like):
select * from where 1=1 or name like '%张%'
参考示例,相信很多小伙伴都可以轻松理解和掌握这两个方法的使用了吧?
很好,那我我们就要进入相对困难的部分了,做好准备~
①
getWhere
AndMore
:以
AND
方式拼装自定义复合条件
②
getWhere
AndMoreEnd
:以
AND
方式拼装并
闭环
自定义复合条件
③
getWhere
OrMore
:以
OR
方式拼装自定义复合条件
④
getWhere
OrMoreEnd
:以
OR
方式拼装并
闭环
自定义复合条件
复合条件是指将多个条件拼装组成
一个条件
来处理并返回结果的条件
集合
听起来很头大?没关系,我们举个栗子。
需求是这样的,
给到一个值1,需要查询在name/phone/text三个字段符合条件的数据
,于是我们可以按下如下示例来写:
sel.getWhereAndMore("name","EQ","1")
.getWhereOr("phone","EQ","1")
.getWhereOrMoreEnd("text","EQ","1");
输出结果:select * from table where 1=1
and (name = '1' or phone = '1' or text = '1')
这样看是不是简单了一些?
很好,那么接下来就是重点了!
##若使用了
getWhereAndMore
或
getWhereOrMore
,则条件中必须!!要有对应的
闭环
方法如
getWhereAndMoreEnd
或
getWhereOrMoreEnd
!
有头一定要有尾。这点一定要记住哦。
组合方式一共有下列几种
-
getWhere
And
More – getWhere
And
More
End
:AND开AND闭
输出结果:select * from table where 1=1
and (name = '1' or phone = '1' and text = '1')
-
getWhere
And
More – getWhere
Or
More
End
:AND开OR闭
输出结果:select * from table where 1=1
and (name = '1' or phone = '1' or text = '1')
-
getWhere
Or
More – getWhere
And
More
End
:OR开AND闭
输出结果:select * from table where 1=1
or(name = '1' or phone = '1' and text = '1')
-
getWhere
Or
More – getWhere
Or
More
End
:OR开OR闭
输出结果:select * from table where 1=1
or (name = '1' or phone = '1' or text = '1')
虽然看着有些麻烦,但大家多练几遍,自然就得心应手了O(∩_∩)O~
重中之重!分组查询!
目前Spring A.S仅支持相对简单分组查询,如涉及到is case条件的话,就需要大家在拓展dao中创建了~
但是
这部分功能正在逐步开发中!大家可以小小的期待一下O(∩_∩)O
大家还记得上一章里的
getSelCols
方法吗?
这次,我们要用
getSelCols
及
getWhere家族
的小伙伴们来实现分组的相关功能。
sel.getSelCols(“”,“NAME,SUM||NAME#LUCK”)
.getWhereAnd("ISDELETE","EQ","0");
.getWhereAnd("SUM||NAME","GT","300");
输出结果:select name,sum(name) as luck from a where 1=1
and isdelete = 0 having sum(name) > 300
group by name
在使用分组时,几个注意点如下:
- getSelCols的第一个参数建议为空
-
在对分组字段进行处理时,字段格式如下
condition||colName#Alias
[
分组数据处理条件
||
字段名
#
输出别名
]
-
若需要使用having条件,key值入参时需要使用
condition||colName
[
分组数据处理条件
||
字段名
]
如果有问题,可以直接在留言区留言~~我看到后会第一时间回复~