根据情况生成不同的查询条件(FIND_IN_SET)
最后更新:2025-07-02 23:32:15
|
状态:未完成
仅针对MySQL
需要区分单个值与集合的的情况
单个值的情况生成SQL:
1 2 | SELECT * FROM HR_EMPLOYEE WHERE FIND_IN_SET(?,ROLE_CODES) |
1 2 | SELECT * FROM HR_EMPLOYEE WHERE FIND_IN_SET(?,ROLE_CODES) OR FIND_IN_SET(?,ROLE_CODES) |
- anyline
- anyline
- ORM
- ORM
- 全部展开
【anyline】
单个值的情况
1 | service.querys( "HR_EMPLOYEE" , condition( "[ROLE_CODES]:role" )) |
【anyline】
多个值的情况
1 | service.querys( "HR_EMPLOYEE" , condition( "[ROLE_CODES]:[role]" )) |
[role] :表示http request通过role参数key提供了一个数组值
【ORM】
单个值的情况
1 2 3 | < if test="roles != null and roles.length>0"> and FIND_IN_SET( #{item}, ROLE_CODES ) </ if > |
【ORM】
多个值的情况
1 2 3 4 5 6 | < if test="roles != null and roles.length>0"> and < foreach item = "item" collection = "roles" separator = "or" open = "(" close = ")" > FIND_IN_SET( #{item}, ROLE_CODES ) </ foreach > </ if > |
collection 属性表示要做foreach循环的对象
item 表示集合中每一个元素或者该集合的对象,支持对象点属性的方式获取属性。(可以理解为起了一个别名)
index 表示循环的下标。(可以设置下标)
open 表示以什么开始
separator 表示每次进行迭代之间以什么符号作为分隔符
close表示以什么结束。