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>
这段代码定义了一个名为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})能查到不等于这四个值的数据
如果你使用了 @Param
注解传递参数,那么在 XML 中应该要使用 ${}
语法来引用变量。所以你的 SQL 语句应该改成:
<select id="findJcyxxNotInJcyids" parameterType="java.lang.String" resultType="com.example.demo.entity.Jcyxx">
SELECT *
FROM jcy_jcyxx
WHERE jcyid NOT IN (${jcyidsString})
</select>
如果你没有使用 @Param
注解传递参数,那么在 XML 中应该要使用 #{}
语法来引用变量。所以你的 SQL 语句应该改成:
<select id="findJcyxxNotInJcyids" parameterType="java.util.List" resultType="com.example.demo.entity.Jcyxx">
SELECT *
FROM jcy_jcyxx
WHERE jcyid NOT IN
<foreach item="item" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</select>
注意,这里的参数类型是 java.util.List
,而不是 java.lang.String
。在 Java 代码中,你需要将字符串转换成一个 List,然后将这个 List 作为参数传递给 MyBatis。
String jcyidsString = "bb768bcb3ca649aaaaf073d0f0abe743,4bb214f612a04bb084fd2029572a6c0b,9d36289a4a99421b95cce0f6c0154b42,18351bc3fc1e4263b764767f9cdfd74d";
List<String> jcyids = Arrays.asList(jcyidsString.split(","));
List<Jcyxx> result = jcyxxMapper.findJcyxxNotInJcyids(jcyids);
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 语句执行错误。
相关推荐
















