为什么输出了语句但是报错(语言-java)

img

img


mybatis为什么输出了语句但是报错,
....<

 ........ <select id="getallclassifyList" resulttype="List">    
 SELECT 'id','classify_name’,'status’,'create_time’FROM 'classify'
 <where>    
 <if test="classifyName ≠ null and classifyName ≠ ''">    
 'classify_name’LIKE CONCAT('%’,#{classifyName}, '%' )    
 </if>    
 </where>         
 </select>

【以下回答由 GPT 生成】

问题的原因是你在SQL语句中使用了不正确的语法。具体来说,以下几个地方需要进行修改:

  1. <span>标签应该被移除:在SQL语句中使用<span>标签是不正确的,它只能用于HTML中。所以你需要将<span>标签从代码中移除。

  2. SELECT语句中的字段名需要用反引号括起来:在SELECT语句中,字段名应该使用反引号()括起来,而不是单引号(')。所以你需要将classify_namestatuscreate_time`这三个字段名使用反引号括起来。

  3. FROM语句中的表名应该使用反引号括起来:在FROM语句中,表名应该使用反引号括起来,而不是单引号。所以你需要将classify这个表名使用反引号括起来。

  4. LIKE语句中的通配符需要双引号括起来:在LIKE语句中,通配符需要使用双引号(")括起来,而不是单引号。所以你需要将"%’,#{classifyName}, ‘%’这部分代码中的单引号改为双引号。

根据以上几点的修改,你的SQL语句应该修改为以下的形式:

<select id="getallclassifyList" resultType="List">
    SELECT `id`, `classify_name`, `status`, `create_time` FROM `classify`
    <where>    
        <if test="classifyName != null and classifyName != ''">
            `classify_name` LIKE CONCAT("%", #{classifyName}, "%")
        </if>    
    </where>
</select>

请根据以上的修改重新尝试运行程序,应该可以解决你遇到的问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

这个改成!=

img

既然输出了语句,那你把语句拿到数据库执行一下看看呗,如果数据库执行也失败,那就是sql问题,检查数据库执行报错是什么原因就好定位和解决

Cause: java.lang.UnsupportedOperationException 这个异常是List接口抛出的异常和sql没关系,尝试修改下resulttype
引用C知道:
当使用MyBatis的resultType类型为list时,这里的resultType返回值类型是集合内存储数据的类型,而不是直接使用字符串"list"。
也就是说,你需要指定一个具体的Java类作为返回值类型,这个类将用于存储查询结果中的每一条记录。例如,在给定的例子中,resultType="employee"表示查询结果将被映射到一个名为Employee的Java类中。

引用 皆我百晓生 小程序回复内容作答:

根据提供的MyBatis查询语句,有以下问题导致报错:

  1. 查询语句中的'id','classify_name','status','create_time'中的单引号应该去掉,正确的写法是id, classify_name, status, create_time

  2. 查询语句中的FROM 'classify'中的单引号也应去掉,正确的写法是FROM classify

  3. 条件查询中使用了错误的判断符号。将替换为!=,正确的写法是classifyName != null and classifyName != ''

修改后的查询语句如下所示:

<select id="getallclassifyList" resulttype="List">    
    SELECT id, classify_name, status, create_time FROM classify
    <where>    
        <if test="classifyName != null and classifyName != ''">    
            classify_name LIKE CONCAT('%', #{classifyName}, '%')    
        </if>    
    </where>         
</select>

请确保以上修改后的语句符合您的业务逻辑和数据库表结构。