springboot+mybatis框架。修改代码String jcyidsString="bb768bcb3ca649aaaaf073d0f0abe743,4bb214f612a04bb084fd2029572a6c0b,9d36289a4a99421b95cce0f6c0154b42,18351bc3fc1e4263b764767f9cdfd74d",在xml中<select id="selectJcyJcyxxListChouqu" resultMap="JcyJcyxxResult"> select j.jcyid, creattime, gxtime, adduser, updateuser, xm, xb, sfzh, csrq, zzmm, mz, xl, xw, byyx, xibie, zy, dwlx, gzdw, gzdwszsf, bm, zc, zw, zyscly, jcyzt, jcysfdc, txdz, lxdh, sj, cz, yb, email, zp, cengji, xulielx, jcylx, jzqk, zzzg, ssjcjg, szshi, szxian, szxparid, dept_id, del_flag, zhuanchang from jcy_jcyxx j <where> <if test="pbquStr != null and pbquStr != ''"> dept_id not in (#{pbquStr}) </if> <if test="s != null and s != ''"> and zzzg = #{s} </if> <if test="s1 != null and s1 != ''"> and zhuanchang = #{s1} </if> <if test="jcylx != null and jcylx != ''"> and jcylx = #{jcylx} </if> <if test="jcyidsString != null and jcyidsString != ''"> and jcyid not in (#{jcyidsString}) </if> </where> ORDER BY RAND() LIMIT 1 </select>
时间: 2023-12-08 11:04:08 浏览: 89
这段代码定义了一个名为`selectJcyJcyxxListChouqu`的查询语句,使用了MyBatis的XML映射方式。其中,变量`jcyidsString`是一个包含多个jcyid的字符串,通过`not in`子句来过滤掉这些jcyid对应的记录。其他条件包括`pbquStr`、`s`、`s1`和`jcylx`,通过`if`语句判断是否需要添加到查询条件中。最后,通过`ORDER BY RAND() LIMIT 1`语句随机返回一条记录。
相关问题
springboot+mybatis框架修改代码String jcyidsString="bb768bcb3ca649aaaaf073d0f0abe743,4bb214f612a04bb084fd2029572a6c0b,9d36289a4a99421b95cce0f6c0154b42,18351bc3fc1e4263b764767f9cdfd74d",在xml中select* from jcy_jcyxx where jcyid not in (#{jcyidsString})能查到不等于这四个值的数据
根据你提供的代码和描述,这个问题可能是因为在你的 SQL 语句中使用了字符串变量,即 `jcyidsString`,但是在 MyBatis 中,字符串类型的变量需要使用 `#{}` 替换才能正常解析。具体来说,你的 SQL 语句应该改为:
```
select * from jcy_jcyxx where jcyid not in (#{jcyidsString})
```
这样 MyBatis 就会把 `jcyidsString` 当做字符串类型的变量进行解析,并将其替换到 SQL 语句中,从而完成 SQL 语句的构建和执行。另外,你可能还需要注意一下 `jcyidsString` 中的逗号分隔符是否正确,否则可能会导致 SQL 语句执行错误。
springboot+mybatis框架。修改代码String jcyidsString="bb768bcb3ca649aaaaf073d0f0abe743,4bb214f612a04bb084fd2029572a6c0b,9d36289a4a99421b95cce0f6c0154b42,18351bc3fc1e4263b764767f9cdfd74d",在xml中select* from jcy_jcyxx where jcyid not in (#{jcyidsString})能查到不等于这四个值的数据
你可以尝试在xml中使用动态SQL的方式,将jcyidsString拆分成多个jcyid,然后使用not in语法进行查询。具体代码如下:
```
<select id="findJcyxxNotInJcyids" resultMap="jcyxxResultMap">
select * from jcy_jcyxx
<where>
<foreach collection="list" item="jcyid" separator="," open="and jcyid not in (" close=")">
#{jcyid}
</foreach>
</where>
</select>
```
在Java代码中,你需要将jcyidsString拆分成多个jcyid,并将它们存储在一个List中,然后将List传递给XML中的findJcyxxNotInJcyids方法。具体代码如下:
```
String jcyidsString = "bb768bcb3ca649aaaaf073d0f0abe743,4bb214f612a04bb084fd2029572a6c0b,9d36289a4a99421b95cce0f6c0154b42,18351bc3fc1e4263b764767f9cdfd74d";
List<String> jcyids = Arrays.asList(jcyidsString.split(","));
List<Jcyxx> jcyxxList = jcyxxMapper.findJcyxxNotInJcyids(jcyids);
```
其中,jcyxxMapper是你定义的mapper接口,它的代码类似如下:
```
@Mapper
public interface JcyxxMapper {
@Select("select * from jcy_jcyxx where jcyid not in (#{jcyids})")
List<Jcyxx> findJcyxxNotInJcyids(@Param("jcyids") List<String> jcyids);
}
```
这样就可以实现查询不等于jcyidsString中指定的jcyid的数据了。
阅读全文