补充知识,存笔记在这里,都很基础,大家有入门级的需求可以看看,有错误的地方欢迎指出以免对初学者造成误导,感谢
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遍历
测试: