1.why
有不少这样的情况,前端会传筛选条件,给到后端的时候是个 conditionStr ,如果您用的是 mybatis-plus 的 API 那么直接 split 一下就可以使用,如果不是,那就需要将其转换成 inStr ,下面举例说明。
2.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') -->