String jcyidsString="bb768bcb3ca649aaaaf073d0f0abe743,4bb214f612a04bb084fd2029572a6c0b,9d36289a4a99421b95cce0f6c0154b42,18351bc3fc1e4263b764767f9cdfd74d",转化为可以在mysql中select* from jcy_jcyxx where jcyid not in (#{jcyidsString})能查到不等于这四个值的数据
时间: 2024-01-09 14:03:18 浏览: 22
可以使用MySQL的`FIND_IN_SET()`函数来实现。具体步骤如下:
1. 将逗号分隔的字符串转换成一个数组,可以使用Java中的`split()`方法实现:
```
String[] jcyidsArray = jcyidsString.split(",");
```
2. 将数组转换成一个逗号分隔的字符串,可以使用Java中的`String.join()`方法实现:
```
String jcyidsNotInString = String.join(",", Collections.nCopies(jcyidsArray.length, "?"));
```
这里使用了`Collections.nCopies()`方法来生成指定长度的由`"?"`组成的列表。
3. 使用`FIND_IN_SET()`函数进行查询:
```
String sql = "SELECT * FROM jcy_jcyxx WHERE FIND_IN_SET(jcyid, ?) = 0";
PreparedStatement pstmt = connection.prepareStatement(sql);
pstmt.setString(1, jcyidsNotInString);
for (int i = 0; i < jcyidsArray.length; i++) {
pstmt.setString(i + 2, jcyidsArray[i]);
}
ResultSet rs = pstmt.executeQuery();
```
这里将转换后的逗号分隔的字符串作为参数绑定到`FIND_IN_SET()`函数中,并且通过循环将数组中的值逐一绑定到`PreparedStatement`中,以避免SQL注入的问题。最后执行查询并返回结果集。