查询条件中空值的处理方式
最后更新:2023-09-29 10:01:28
|
状态:未完成
这里的空值说的是在自动生成查询条件是的情况,如果是原生的SQL条件,则不会处理
service.quers("CRM_USER", " CODE='' ", "NM IS NULL") 这种提供原生SQL的情况不处理
需要处理的是以下3种情况
service.quers("CRM_USER", " CODE='' ", "NM IS NULL") 这种提供原生SQL的情况不处理
需要处理的是以下3种情况
-
service.querys("CRM_USER", condition("CODE:code"))
condition根据提供的参数,从http request中取值并生成ConfigStore,这里的code是指从 request中提取code的值 如 http://localhst?code=1
1.1如果code有值则生成SQL WHERE CODE = ?
1.2如果request中未提交code参数或提交一个空值code=null或code=
1.2.1:默认情况下CODE条件被忽略
1.2.2:condition("+CODE:code") 会生成WHERE CODE IS NULL(+表示CODE必须参与查询条件)
1.2.3:condition("++CODE:code") 整个SQL中止执行(++ 表示CODE值必须有值) -
service.querys("CRM_USER", "CODE:"+code)
2.1如果code有值,还是正常生成SQL WHERE CODE = ?
2.2这里code值可能为null也可能为"", 对应拼接成的querys参数 querys("CRM_USER","CODE:null") 或 querys("CRM_USER", "CODE:")
2.2.1这两种情况都按空处理默认情况下也是CODE条件被忽略
2.2.2 "+CODE:"+code 也就是 "+CODE:null"或"+CODE:" 会生成WHERE CODE IS NULL(+表示CODE必须参与查询条件)
2.2.3 "++CODE:"+code 也就是 "++CODE:null"或"++CODE:" 整个SQL中止执行(++ 表示CODE值必须有值) -
ConfigStore.and("CODE", code)
and提供了Compare.EMPTY_VALUE_SWITCH参数可以更精确的控制SQL的生成方式,(注意上面的情况只能生成IS NULL并不能生成 CODE = ''的条件)
EMPTY_VALUE_SWITCH的几个枚举值
IGNORE //忽略当前条件 其他条件继续执行
BREAK //中断执行 整个SQL不执行
NULL //生成 WHERE ID IS NULL
SRC //原样处理 会生成 WHERE ID = NULL
如:
and(IGNORE, "CODE", code) 当code==null或code==""时忽略当前条件
and(BREAK, "CODE", code) 当code==null或code==""时整个SQL中止执行
and(NULL, "CODE", code) 当code==null或code==""时生成SQL WHERE CODE IS NULL
and(SRC, "CODE", code) 当code==null时生成SQL WHERE CODE IS NULL;当code==""时生成SQL WHERE CODE = ''