mybatis 查询的时候提示 JDBC requires that the JdbcType 错误怎么解决及mysql常用函数
凯哥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.fileName1ELSEREPLACE(x.fileName1,CONCAT(CONCAT(\'.\',x.fileSuffix)),\'\')ENDAS \'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 uON u.id = a.update_byWHERE 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 descsql使用到的常用参数说明:1:使用到replace替換函数2:使用case when選擇函数3:使用CONCAT连接函数4:使用FORMAT 格式化函數
以及在mybatis中 模糊查询的使用