某个字段的值为逗号分隔的多个值组成的字符串,现在需要通过一个可以多选的下拉框进行条件查询。
首先将该下拉框的值在后台获取后封装进一个String数组中,如;
params.put("systemIdArr", request.getParameterValues("systemId"));
然后在mybatis的xml文件中编写对应的SQL语句进行查询:
and
','||a.main_system_id||',' like '%,' || #{systemIdArr} || ',%'
该语句在运行时被解析成如下格式(假设前端多选下拉框同时选择了三个参数进行查询):
and ( ','||a.main_system_id||',' like '%,' || ? || ',%' or ','||a.main_system_id||',' like '%,' || ? || ',%' or ','||a.main_system_id||',' like '%,' || ? || ',%' )
更直白一点描述,要查找所有main_system_id的值包含a或者b或者c的所有记录。
table_1
id main_system_id
1 a,b,c
2 b
3 b,c
4 a,c