根据情况生成不同的查询条件(FIND_IN_SET)
最后更新:2023-10-18 19:43:00
|
状态:未完成
仅针对MySQL
需要区分单个值与集合的的情况
单个值的情况生成SQL:
SELECT * FROM HR_EMPLOYEE WHERE FIND_IN_SET(?,ROLE_CODES)
SELECT * FROM HR_EMPLOYEE WHERE FIND_IN_SET(?,ROLE_CODES) OR FIND_IN_SET(?,ROLE_CODES)应用场景:每个职员有多个角色,要查询的是有A角色 或者 有B角色的 职员列表
- anyline
- anyline
- ORM
- ORM
- 全部展开
【anyline】
单个值的情况
service.querys("HR_EMPLOYEE", condition("[ROLE_CODES]:role"))
【anyline】
多个值的情况
service.querys("HR_EMPLOYEE", condition("[ROLE_CODES]:[role]"))[ROLE_CODES] :表示 要用FIND_IN_SET 函数查询ROLE_CODES列
[role] :表示http request通过role参数key提供了一个数组值
【ORM】
单个值的情况
<if test="roles != null and roles.length>0"> and FIND_IN_SET( #{item}, ROLE_CODES ) </if>
【ORM】
多个值的情况
<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>foreach元素的属性主要有 collection、item、index、open、separator、close。
collection 属性表示要做foreach循环的对象
item 表示集合中每一个元素或者该集合的对象,支持对象点属性的方式获取属性。(可以理解为起了一个别名)
index 表示循环的下标。(可以设置下标)
open 表示以什么开始
separator 表示每次进行迭代之间以什么符号作为分隔符
close表示以什么结束。