方法一:
将前端传入的逗号隔开的字符串进行字符串分割,然后将其放在新数组中,最后在写SQL时查询数组。
例如:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class YourController {
@GetMapping("/query")
public String queryData(@RequestParam("values") String values) {
// 拆分逗号隔开的字符串
String[] valueArray = values.split(",");
// 查询操作
for (String value : valueArray) {
// 这里假设有一个名为queryDataByValue的方法来执行查询
String result = queryDataByValue(value);
System.out.println("Query result for value " + value + ": " + result);
}
// 这里可以返回一个合适的响应给前端
return "Queries completed.";
}
private String queryDataByValue(String value) {
// 根据值执行查询操作,这里的逻辑将根据你的具体情况而定
// 返回查询结果
return "Your query result for " + value;
}
}
方法二(推荐):
在SQL中用迭代
<if test="dto.userInfos != null and dto.userInfos.size() > 0">
and user_info In
<foreach collection="dto.userInfos" item="userInfo" open="(" separator="," close=")">
#{userInfo}
</foreach>
</if>
这段代码中:
-
<if>
语句:- 仅当指定的测试条件为真时,会执行封闭的代码块。
- 被检查的条件是
dto.userInfos
不为 null 且具有大于 0 的大小。
-
and user_info In
:- 这是 SQL 查询的一部分,指示将有一个与
user_info
列相关的IN
子句。
- 这是 SQL 查询的一部分,指示将有一个与
-
<foreach>
元素:- 这是 MyBatis 中用于迭代集合的元素,它会为集合中的每个项目包含封闭内容。
collection="dto.userInfos"
指定要迭代的集合。item="userInfo"
将当前迭代中的项目赋给变量userInfo
。open="("
指定要在迭代开始时(在第一个项目之前)插入的字符串。separator=","
指定在项目之间用作分隔符的字符串。close=")"
指定要在迭代结束时(在最后一个项目之后)插入的字符串。#{userInfo}
是 MyBatis 中的参数替代语法,其中userInfo
是每次迭代的参数值。
综合这段代码是将前端传入的逗号隔开的字符串用userInfos这个List接收,最后迭代遍历它放入原字段中。