390 Star 1.6K Fork 482

闲.大赋(李家智) / BeetlSQL

 / 详情

提供and函数,方便判断

待办的
拥有者
创建于  
2019-10-05 10:23
selectByCond
===
select * from user where 1=1
#and(name)#

评论 (5)

闲.大赋(李家智) 创建了任务

正如你先前提到的,这是个临时解决方案,虽然能解决and field=?这种SQL的非空判断问题,但不通用,如果是or not(field=?)怎么办,如果是html里输出片段怎么办。我对模板不了解,不知道其它模板有没有解决方案,最好能用统一的语法符号。
这个问题在jSqlBox是用一个单独的函数noNull来解决如:

db.iQueryForMapList("select * from a where 1=1",noNull("and name like ?","%",name,"%"));

但模板和Java不具备可比性,仅供参考。

这样,beetl也可以扩展,提供类似函数
and函数方便了大部分用途,实在不行,还有if 和else

突然想起能做到,beetl模板支持双定界符,比如

[!  and user=#name# ]

如果配置[! ]为定界符,那么beetl有机会将上面的文本翻译成

if(isNotEmpty(name)){
    
        user=#name#
} 

即增加语法树if判断,并用第一个碰到的表达式#name# 作为条件。 beetl需要稍微改造一下支持双定界符的不同语义,目前双定界符是一样的(双占位符不一样)

哈哈,又是我select * from user where 1=1
<[AND age=#age#]>
<[AND username=#username#]>
<[]>自动判断参数是否传值 这种还是很爽的

@huaxinx 这个理论上能做到,有空会做的,或者在beetlsql3 大版本发布提供

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(3)
920504 drinkjava2 1578935955 29 xiandafu 1678706040 1803344 huaxinx 1578960140
Java
1
https://gitee.com/xiandafu/beetlsql.git
git@gitee.com:xiandafu/beetlsql.git
xiandafu
beetlsql
BeetlSQL

搜索帮助