com.baomidou.mybatisplus.core.exceptions.MybatisPlusExceptionError: Error: Method queryTotal模糊查询语法错误
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution errororg.apache.ibatis.type.TypeException: Error setting non null for parameter<!-- 培训单位模糊查询 -->
一、问题描述
访问接口时,报错:
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Method queryTotal execution error
org.apache.ibatis.type.TypeException: Error setting non null for parameter
二、原因
映射文件xml中SQL语法错误,模糊查询语法错误。
三、解决
<!-- 培训单位模糊查询 -->
<if test="entity.unit!=null and entity.unit!=''">
and unit LIKE CONCAT('%',#{entity.unit,jdbcType=VARCHAR},'%')
</if>
四、补充-Mybatis的模糊查询
为了避免SQL注入的风险,不讨论使用${}的情况。
使用name举例
1、模糊查询写法一:直接使用#{}占位,"%"使用双引号" " 而不是单引号' '
name LIKE "%"#{name}"%"
2、模糊查询写法二:使用concat拼接
name LIKE CONCAT('%',#{name},'%')
而在开发中我们通常会使用#{name,jdbcType=VARCHAR}来指定数据类型。为什么呢?
五、补充-jdbcType
因为在MyBatis中,会指定jdbcType类型的参数,当参数为Null时,类型默认设置为jdbcType.OTHER,而MySQL数据库是无法识别该格式,会报错: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type
所以,通常我们会给使用jdbcTpye预先指定好数据类型。
#{entity.unit,jdbcType=VARCHAR}
判空,是我们开发中需要养成的一个非常好的习惯。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)