com.baomidou.mybatisplus.core.exceptions.MybatisPlusExceptionError: Error: Method queryTotal模糊查询语法错误

导读:本篇文章讲解 com.baomidou.mybatisplus.core.exceptions.MybatisPlusExceptionError: Error: Method queryTotal模糊查询语法错误,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、问题描述

访问接口时,报错:

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}

判空,是我们开发中需要养成的一个非常好的习惯。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117705.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!