mybatis中Oracle参数为NULL错误问题及解决

 更新时间:2022年12月22日 11:40:35   作者:漫天雪_昆仑巅  
这篇文章主要介绍了mybatis中Oracle参数为NULL错误问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

mybatis中Oracle参数为NULL错误问题

在Mybatis操作Oracle数据库的时候( PS:mysql中不会出现),会遇到个小问题,

当数据库为Oracle时候,插入某个参数数据如果为null,mybatis会报错,提示类型不正确,

原因是当插入数据为null类型的时候,mybatis会自动转换为JdbcType.OTHER类型,因此需要修改一下参数的转换类型

有两种方式可以解决:

1.公共配置方法

在Mybatis配置中设置jdbcTypeForNull=NULL,

即:

<settings>
   <setting name="jdbcTypeForNull" value="NULL"/>
</settings>

2.参数配置方法

修改mybatis的sql语句参数通配符,设置当参数为null时候采用 JdbcType.NULL类型

即:

select * from tb where name = #{name,jdbcType=NULL}

如上两种方式配置,都可以解决Oracle下参数为null操作错误问题!

mybatis oracle insert 属性为null保存报错 无效的列类型1111

mybatis   数据库 oracle  insert 时有些备用字段为空,保存报错,无效的列类型:1111

解决办法

1、修改配置文件 application.yml  增加配置 jdbc-type-for-null: 'null' ,单引号不要忘了

mybatis:
  mapper-locations: classpath:mapping/*/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    call-setters-on-nulls: true
    jdbc-type-for-null: 'null'

2、在SQL语句里相应的属性上带上JDBCType

3、增加配置类

查看mp-starter-源码, MybatisPlusAutoConfiguration, 可以发现,第119行有一个configurationCustomizers,可以修改configuration  自定义一个,配上就完工

@Bean
    public ConfigurationCustomizer configurationCustomizer(){
        return new MybatisPlusCustomizers();
    }
 
    class MybatisPlusCustomizers implements ConfigurationCustomizer {
 
        @Override
        public void customize(org.apache.ibatis.session.Configuration configuration) {
            configuration.setJdbcTypeForNull(JdbcType.NULL);
        }

4、

第一步:把 可更新为空的 javabean 属性前加上注解:

@TableField(el = "username, jdbcType=VARCHAR")
@Email
@TableField(el = "email, jdbcType=VARCHAR")
private String email;

第二步: 使用updateAllColumnById方法,而不是updateById.    如:

this.baseMapper.updateAllColumnById(user); 

报错原因:

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解读查看zookeeper事务日志的正确姿势

    解读查看zookeeper事务日志的正确姿势

    这篇文章主要介绍了解读查看zookeeper事务日志的正确姿势。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • Java报错:找不到或无法加载主类的解决办法

    Java报错:找不到或无法加载主类的解决办法

    在Java中当您尝试运行一个类作为主类时,如果系统找不到该类或者无法加载该类,就会出现"找不到或无法加载主类"的错误,这篇文章主要给大家介绍了关于Java报错:找不到或无法加载主类的解决办法,需要的朋友可以参考下
    2024-12-12
  • Java生成和解析XML格式文件和字符串的实例代码

    Java生成和解析XML格式文件和字符串的实例代码

    这篇文章主要介绍了Java生成和解析XML格式文件和字符串的实例代码,需要的朋友可以参考下
    2014-02-02
  • Java 中 Class Path 和 Package的使用详解

    Java 中 Class Path 和 Package的使用详解

    这篇文章主要介绍了Java 中 Class Path和Package的使用详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-08-08
  • SpringBoot项目中使用Sharding-JDBC实现读写分离的详细步骤

    SpringBoot项目中使用Sharding-JDBC实现读写分离的详细步骤

    Sharding-JDBC是一个分布式数据库中间件,它不仅支持数据分片,还可以轻松实现数据库的读写分离,本文介绍如何在Spring Boot项目中集成Sharding-JDBC并实现读写分离的详细步骤,需要的朋友可以参考下
    2024-08-08
  • Java批量操作文件系统的实现示例

    Java批量操作文件系统的实现示例

    文件上传和下载是java web中常见的操作,本文主要介绍了Java批量操作文件系统的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • 使用spring通过aop获取方法参数和参数值

    使用spring通过aop获取方法参数和参数值

    这篇文章主要介绍了使用spring通过aop获取方法参数和参数值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • Spring前后端跨域请求设置代码实例

    Spring前后端跨域请求设置代码实例

    这篇文章主要介绍了Spring前后端跨域请求设置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • Java实现解压zip压缩包的两种方法(支持多层级)

    Java实现解压zip压缩包的两种方法(支持多层级)

    压缩文件在生活中经常能用到,在Java中提供了压缩和解压缩文件的功能,本文主要介绍了Java实现解压zip压缩包的两种方法(支持多层级),感兴趣的可以了解一下
    2024-03-03
  • Java客户端调用.NET的WebService实例

    Java客户端调用.NET的WebService实例

    下面小编就为大家带来一篇Java客户端调用.NET的WebService实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09

最新评论