在MyBatis中,如果你想在同一个字段上应用多个LIKE
条件,你可以使用<choose>
标签来组合这些条件,或者使用<foreach>
来动态生成SQL语句。以下是使用<foreach>
实现的一个例子:
<select id="selectByMultipleLikes" parameterType="map" resultType="YourResultType">
SELECT *
FROM your_table
WHERE
<foreach item="item" index="index" collection="yourMap" open="(" separator="OR" close=")">
your_column LIKE CONCAT('%', #{item}, '%')
</foreach>
</select>
在这个例子中,your_table
是你要查询的表名,your_column
是你要应用LIKE
条件的字段名。yourMap
是传入的参数Map,它包含了你想要应用LIKE
条件的值的列表。
调用Mapper时,你可以传递一个包含多个值的Map作为参数:
Map<String, Object> params = new HashMap<>();
params.put("yourMap", Arrays.asList("value1", "value2", "value3"));
List<YourResultType> results = yourMapper.selectByMultipleLikes(params);
mapper接口:
List<YourResultType> selectByMultipleLikes(@Param("params") Map<String, Object> map);
这将生成类似以下的SQL语句:
SELECT *
FROM your_table
WHERE (
your_column LIKE '%value1%'
OR your_column LIKE '%value2%'
OR your_column LIKE '%value3%'
)