开发者

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

目录
  • myBATis中oracle参数为NULL错误问题
    • 1.公共配置方法
    • 2.参数配置方法
  • mybatis oracle insert 属性为null保存报错 无效的列类型1111
    • 解决办法
  • 总结

    mybatis中Oracle参数为NULL错误问题

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

    当数据库为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 * javascriptfrom 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:
     mappphper-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, 可以发现,第119android行有一个configurationCustomizers,可以修改configuration  自定义一个,配上就完工

    @Bean
      public ConfigurationCustomizer configurationCustomizer(){
        return new MybatisPlusCustomizers();
      }
    
      class MybatisPlusCustomizers implements ConfigurationCustomizer {
    
        @Override
    android    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类型,Orawww.devze.comcle是不支持,适配的时候也因为这个问题导致mybatis报错。

    总结

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

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜