zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mybatis 查询的时候提示 JDBC requires that the JdbcType 错误怎么解决以mysql常用几个函数使用

mysql错误mybatisJDBC 使用 解决 查询 函数
2023-06-13 09:15:55 时间

本文主要内容:

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中 模糊查询的使用