why
有不少这样的情况,前端会传筛选条件,给到后端的时候是个 conditionStr ,如果您用的是 mybatis-plus 的 API 那么直接 split 一下就可以使用,如果不是,那就需要将其转换成 inStr ,下面举例说明。
use
- 转换【使用 JDK8 的 stream 实现】
public class conditionStrToInStr { public static void main(String[] args) { String conditionStr = "conditionValueA,conditionValueB,conditionValueC"; String inStr = Arrays.stream(conditionStr.split(",")).collect(Collectors.joining("\',\'", "\'", "\'")); System.out.println(inStr); } } // 输出结果为 'conditionValueA','conditionValueB','conditionValueC'
- mapper文件使用 inStr
<select id="getInfoByCondition" parameterType="map" > SELECT * FROM tableName <where> <if test="inStr!= null and inStr!= ''"> AND conditionField IN ( ${inStr} ) </if> </where> </select> <!-- SELECT * FROM tableName WHERE conditionField IN ('conditionValueA','conditionValueB','conditionValueC') -->