【Spring A.S】核心组件:SqlEngine使用手册:查询条件(二)

  • Post author:
  • Post category:其他




上一章节

中,我们已经初步认识了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


在使用分组时,几个注意点如下:

  1. getSelCols的第一个参数建议为空
  2. 在对分组字段进行处理时,字段格式如下

    condition||colName#Alias


    [

    分组数据处理条件

    ||

    字段名

    #

    输出别名

    ]
  3. 若需要使用having条件,key值入参时需要使用

    condition||colName


    [

    分组数据处理条件

    ||

    字段名

    ]


如果有问题,可以直接在留言区留言~~我看到后会第一时间回复~



版权声明:本文为qq_27047215原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。