根据情况生成不同的查询条件(FIND_IN_SET)

最后更新:2023-10-18 19:43:00 | 状态:未完成

仅针对MySQL
需要区分单个值与集合的的情况
单个值的情况生成SQL:

SELECT * FROM HR_EMPLOYEE
WHERE FIND_IN_SET(?,ROLE_CODES) 


多个值的情况生成SQL:
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表示以什么结束。
首页 最近更新 搜索 提交 回复