mybatis中Errorsetting null forparameter #2 怎么解决??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis中Errorsetting null forparameter #2 怎么解决??相关的知识,希望对你有一定的参考价值。

我是在select的时候报的这个错,查询入参都有数据的,但是为什么会报这个问题呢?
Errorsetting null forparameter #2 with JdbcType OTHER

适配oracle数据库的时候,mybatis报了Error setting null parameter,bug发现是参数出现了null值,对于Mybatis,如果进行操作的时候,没有指定jdbcType类型的参数,就可能导致问题。

postgreSQL,MySQL,SQLSERVER都支持JdbcType.NULL类型,Oracle是不支持,适配的时候也因为这个问题导致mybatis报错。

比如,之前配置#submitDate,它会在oracle中报错:Error setting null parameter

更改成#submitDate,jdbcType=DATE,注意jdbcType是区分大小写的。

参考技术A 你看下,传进去的第二个参数是个null

自己改一下就行了本回答被提问者采纳

mybatis-plus getObj方法返回null

在mybatis-plus低版本中自定义查询,selectObj(Condition.create().setSqlSelect("columns...")),低版本中

selectObj(Condition.create().setSqlSelect("max(sort)").isNull("parent_id"));

返回Object为查询结果max(sort)。可自己做类型转换。

 升级到高版本后放弃Condition拼接SQL,代码如下:

QueryWrapper<Menu> wrapper = new QueryWrapper<>();
Object o = getObj(wrapper.select("max(sort)").isNull("parent_id"));

此处返回的Object为空,认真一点会发现,返回对象应该是泛型对应的Menu对象,个人暂认为(猜测)是属性名对应不到实体,所以返回时处理了异常返回null(在下在这里偷懒了,没看源码全个人猜想,猜想错了望批评指正),我加上别名的时候发现跟我预想的一样。

QueryWrapper<Menu> wrapper = new QueryWrapper<>();
Object o = getObj(wrapper.select("max(sort) as sort").isNull("parent_id"));

此时返回一个Menu对象,sort为我需要的结果。希望看到文章的你也能细心一点,注意返回对象。

QueryWrapper<Menu> wrapper = new QueryWrapper<>(); 
Object o = getObj(wrapper.select("max(sort) as sort").isNull("parent_id"));

 

以上是关于mybatis中Errorsetting null forparameter #2 怎么解决??的主要内容,如果未能解决你的问题,请参考以下文章

java mybatis 查询列表会返回为null吗

mybatis oracle 不能返回 null 列

Mybatis-Plus将字段设置为null

Mybatis中resultType个别字段获取数据为null

Mybatis中resultType个别字段获取数据为null

Mybatis-plusupdateById()方法不能更新字段为null的原因及解决办法