首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mybatis 查询的时候提示 JDBC requires that the JdbcType 错误的解决方法

mybatis 查询的时候提示 JDBC requires that the JdbcType 错误的解决方法

作者头像
凯哥Java
发布2019-06-30 11:21:27
3.7K0
发布2019-06-30 11:21:27
举报
文章被收录于专栏:凯哥Java凯哥Java凯哥Java

本文主要内容:

1:mybatis查询时候提示错误:JDBC requires that the JdbcType

2:mysql常用的连接、截取、case when format等函数使用

3:mybatis 怎么模糊查询

正文:

在使用mybatis的时候,有时候我们在查询的时候提示错误:

JDBC requires that the JdbcType must be specified for all nullable parameter。

原因有二:

原因一:查询条件中,必填的,在执行查询的时候没有填写。

各种搜索,都是说存在空值。可是在mapper中做了判断了。

分析:

在直接访问的时候,没有报错。通过查询条件的时候,就会报错。经过对比发现,直接访问对象属性有值,但是在点击查询的时候,form中隐藏域,只有id而没有name属性。当页面中的数据传递给后台,实体赋值的时候,都是空了。而sql语句中:

正好使用到了。所以会一直报错。

错误前:

修改后:

添加name属性就可以了。

原因二:有时候需要指定参数类型:jdbcType=VARCHAR

如果在遇到类似错误,不妨从这两个方面下手,排除下。就因为自己不认真,浪费了一个小时实际。

最后奉献上一条sql语句:

select x.*,REPLACE(x.usedSize1,'.00','') AS 'usedSize' ,CASE WHEN x.hasFiled=1 THEN x.fileName1

ELSE

REPLACE(x.fileName1,CONCAT(CONCAT('.',x.fileSuffix)),'')

END

AS 'fileName' FROM (

SELECT a.id 'id' ,a.file_name 'fileName1',FORMAT (a.file_size/1024,2 ) 'fileSize',a.used_size  'usedSize1', a.update_date 'updateDate'

,a.update_by ,a.create_date,a.file_suffix 'fileSuffix',a.field_id as 'fieldId'  ,u.name AS "updateBy.name",a.has_filed 'hasFiled',file_pid 'filePid'

FROM doc_detail a JOIN sys_user u

ON u.id = a.update_by

WHERE a.pro_id=#{proId}

AND a.financing_id=#{financingId}

AND a.file_pid=#{filePid}

AND a.del_flag='0'

)x

<where>

<if test="fileName1 != null and fileName1 != ''">

AND x.fileName1 LIKE CONCAT('%', #{fileName1}, '%')

</if>

</where>

order by x.create_date desc

sql使用到的常用参数说明:

1:使用到replace替換函数

2:使用case when選擇函数

3:使用CONCAT连接函数

4:使用FORMAT 格式化函數

以及在mybatis中 模糊查询的使用

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档