9 **补充说明**
### 9.1 @if()用法
Sqltoy针对一些特殊业务场景给sql处理预留一个超级用法:
![](https://img.kancloud.cn/e2/21/e22165fb8be2fbf5fdcd82fdbca3d440_724x302.png)
@if()支持两种模式的逻辑判断:
* 单逻辑判断:@if(:paramName>=value)
* 双逻辑判断:@if(:paramName1>=value1 && :paramName2<=value2)
比较符号支持:>、>=、==、<、<=、!=、<>;逻辑运算符:&& 和 ||、include、in、out
* 时间比较:@if(:paramName>=now()+x) 或@if(:paramName>=now()-x)
表示时间的:now()、nowtime()、${.now}
表示日期的:day()、sysdate()、${.day}
![](https://img.kancloud.cn/e5/c1/e5c11a995d3c5770b889d278524873c9_1005x277.png)
* include包含判断:@if(:statusAry include 1),如果statusAry是数组其中包含1返回true,如果statusAry值是一个字符串,返回statusAry. contains(“1”) 的结果。
* 取size:@if(size(:statusAry)>1)) ,即通过size(:参数名称)模式取得集合数组的长度
* In 用法: @if(:status in ‘1,2,3’) 当status属于1或2或3时返回true
* out 用法:@if(:status out ‘1,2,3’) 当status不属于1或2或3时返回true
### 9.2 @fast 用法
@fast()写在sql语句中,非分页等查询框架会自动剔除@fast,因此不影响其他查询。
### 9.3 @blank()用法
@blank() 目的是为非条件部分的语句虚构出一个参数,让其符合sqltoy的sql组织规则
@blank()应该很少会用到,有了@if() 后@blank意义不大了
![](https://img.kancloud.cn/06/d3/06d3bb423628b4863bc6600d3982c1d6_577x206.png)
* 当sexType 为null的时候按照sqltoy的#\[\]判断逻辑#\[@blank(:sexType) t.SEX\_TYPE\]
这部分会被剔除,当sexType不为null的时候则会变成@blank(:sexType) t.SEX\_TYPE,
@blank(:sexType) 框架自动会变成空白,则不影响sql的执行,灵活应用则可以实现非常灵活的sql组织。
### 9.4 @value()用法
@value(:paramName) 类似于@blank(:paramName),唯一的区别是当@value(:paramName) 会直接显示paramName对应的值。
### 9.5 @loop()用法
* @loop()用于sql动态循环组织字段、条件,一般针对数组或集合,且不适用于in的场景。
* 分三种格式
* @loop(:loopParam,loopContent)
* @loop(:loopParam,loopContent,linkSign)
* @loop(:loopParam,loopContent,linkSign,startIndex,endIndex)
范例:注意@blank并非必须,是因为要融合其他语句(如and 和括号等)。
![](https://img.kancloud.cn/57/4c/574c1f0a1a8cb204de2075f578cd811f_1368x387.png)
调用范例:
![](https://img.kancloud.cn/26/af/26af202250abae8ca7d241d1b6933087_1164x402.png)
* 注意事项
@loop(:loopParam,loopContent,linkSign) 是通过逗号分隔内部参数的,如果loopContent中包含逗号等,建议用双引号""或大括号{},来包裹内容
@loop(:staffIds," t.STAFF\_ID=':staffIds\[i\]' "," or ")
- 1.简介
- 开发历程
- 技术架构
- 问答了解
- 版本历史
- update-5.1.4、4.18.43
- update-5.1.2
- 早期历史
- 5.1.15.rc1
- 2.快速使用
- 示例与环境
- quickvo工具使用
- 用法说明
- 关键注意事项
- 严格VO(DTO)和POJO(entity)分层
- 3.教程
- spring项目搭建
- Toy-ORM 配置
- 详细配置参数
- 缓存功能
- 缓存配置、缓存扩展
- 扩展缓存框架配置
- 缓存翻译
- 其他缓存应用场景
- 公共功能
- 表(对象)关联
- 公共字段赋值
- 链式操作
- DTO与POJO互转
- 对象操作
- save + update
- delete + trunk
- load加载数据
- 唯一验证
- 树形数据
- sharding分库分表
- SQL操作
- sql文件规则
- filters说明
- 缓存翻译
- 分库分表
- 汇总、环比
- 行列转换
- 数据脱敏
- 格式化-数字日期
- sqlToy的sql查询基本规则
- Sql查询功能
- load操作
- get操作
- find操作
- 分页查询
- 并行查询
- execute操作
- executeSql
- executeStore
- 数据库特性
- 主键策略
- JSON等类型扩展支持
- 跨库说明--异种库兼容
- 数据库保留字处理
- 多源-多库-异库
- 多数据源
- Mongodb支持
- ElasticSearch支持
- 高级扩展
- 补充-if+fast+blank+value+loop
- 高级功能
- 完美sql
- 快速分页
- 缓存翻译
- 防止sql注入
- 字段加解密
- 扩展集成