动态SQL(IF标签,WHERE标签,SET标签,choose(when,otherwise),trim标签,SQL标签,foreach遍历)

补充知识,存笔记在这里,都很基础,大家有入门级的需求可以看看,有错误的地方欢迎指出以免对初学者造成误导,感谢

 

IF标签:

例:这句SQL后面有两个条件,如果用户传参就将参数放进进SQL语句的where后面,实现根据这两个条件查询。但现在需要实现的功能是:这两个参数可以不传,即实现无条件全查;

使用IF标签,添加一个条件,如果title不是空,就将传参过来的tiele作为查询条件拼接上去:

下面是两个条件的情况:

 可是------

WHERE 标签(管理多个条件,智能去掉and或or)

若完全使用if,一旦第一个条件不满足,则会出现where后面直接跟and或or,会出问题!

 报错,可见where后面拼接了一个and

所以这里开始引入where标签,将条件全部写在里面:

 这里第一个条件不传也没事,会智能的把其带的and从where后面去掉,where后面再拼接上第二个条件正常查询:

 如果一个条件都没有,那么where就取消了,执行全查:

choose(when,otherwise)

和JAVA中的switch-case很像,并且在最后面还加了都不满足的情况备选

SET标签(会动态前置set关键字,也会删除无关逗号)

在正常执行update修改操作的时候,set改一些值,每一个修改之间用逗号隔开。但是要注意,最后一个set后面要写where是不能再跟逗号的!

 正常情况下:根据id条件修改两个字段数据updata()

 结果:

 SET标签会动态前置set关键字,也会删除无关逗号,因为用了条件语句之后很可能就会在生成的SQL语句的后面留下这些逗号(参见前面where标签使用示例)

 SQL语句中逗号已自动删除

trim:

where标签只会在 至少一个子元素条件成立的情况下才会插入“WHERE”,否则不插入。而且当语句开头为“AND”或“OR”时也会将之去除,下面是where标签功能的实现展示

 同理,像上面set标签尾部不能有逗号,这个自动去除逗号的功能也可以看具体实现:

使用SQL标签抽取公共代码片段

像下面的if判断代码片段,可能在较大的项目中,会成千上万的使用

所以可以抽取出来进行封装,在需要的地方进行引入即可:

另外提一下SQL标签注意事项:

1.尽量不要在连表查询里面使用SQL片段

2.不要存在where标签,可能会引起失效

foreach遍历

 测试:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值