查询条件中空值的处理方式

最后更新:2023-09-29 10:01:28 | 状态:未完成
这里的空值说的是在自动生成查询条件是的情况,如果是原生的SQL条件,则不会处理
service.quers("CRM_USER", " CODE='' ", "NM IS NULL") 这种提供原生SQL的情况不处理

 需要处理的是以下3种情况


  1. 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值必须有值)
  2. 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值必须有值)
  3. 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 = ''




首页 最近更新 搜索 提交 回复