mybatis批量插入时,有字段可能为null会报错问题

 更新时间:2023年11月03日 14:23:22   作者:鱼丸丸  
这篇文章主要介绍了mybatis批量插入时,有字段可能为null会报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

解决方案

在指定了jdbcType的前提下, 在mybatis-config.xml文件中配置一下,添加settings配置,NULL要大写

如下:

 <settings> 
 	<!--插入为空时插入空值避免报空指针-->
 	 <setting name=“jdbcTypeForNull” value=“NULL”/>  
  <settings> 

如果是mybatis plus的话,在.yml里可以这样写:

mybatis-plus:
  configuration:
    jdbc-type-for-null: 'null' 

也可以修改配置文件类,很多种方式,其实都是把jdbcTypeForNull设为null,是不是批量操作都可以这么设

产生的原因

设置的JDBC类型为空时,某些驱动程序要指定值,默认是OTHER并不是BULL,mybatis此时是无法处理null值的

记一下mybatis常见配置设置

 <!– 配置设置 –>  
 <settings>  

  <!– 配置全局性 cache 的 ( 开 / 关) default:true –>  

 <setting name=“cacheEnabled” value=“true”/>  



 <!– 是否使用 懒加载 关联对象  同 hibernate中的延迟加载 一样  default:true –>  

<setting name=“lazyLoadingEnabled” value=“true”/>  



<!– [当对象使用延迟加载时 属性的加载取决于能被引用到的那些延迟属性,否则,按需加载(需要的是时候才去加载)] –>  

<setting name=“aggressiveLazyLoading” value=“true”/>  



<!– 是否允许单条sql 返回多个数据集  (取决于驱动的兼容性) default:true –>  
 <setting name=“multipleResultSetsEnabled” value=“true”/>  



 <!– 是否可以使用列的别名 (取决于驱动的兼容性) default:true–>  

 <setting name=“useColumnLabel” value=“true”/>  
            

 <!–允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。  default:false–>  
<setting name=“useGeneratedKeys” value=“false”/>  

             

<!–指定 MyBatis 如何自动映射 数据基表的列 NONE:不隐射 PARTIAL:部分  FULL:全部–>  
<setting name=“autoMappingBehavior” value=“PARTIAL”/>  


              
<!– 这是默认的执行类型   

        SIMPLE :简单    

        REUSE:执行器可能重复使用prepared statements 语句   

        BATCH:执行器可以重复执行语句和批量更新  

 –>  
<setting name=“defaultExecutorType” value=“SIMPLE”/>  
             
             

<!– 设置驱动等待数据响应的超时数  默认没有设置–>  

<setting name=“defaultStatementTimeout” value=“25000″/>  


            
<!– [是否启用 行内嵌套语句  defaut:false] –>  

<setting name=“safeRowBoundsEnabled” value=“false”/>  

              

<!– [是否 启用  数据中 A_column 自动映射 到 java类中驼峰命名的属性 default:fasle] –>  

<setting name=“mapUnderscoreToCamelCase” value=“false”/>  

             

<!– 设置本地缓存范围 session:就会有数据的共享  statement:语句范围 (这样就不会有数据的共享 ) defalut:session –>  

<setting name=“localCacheScope” value=“SESSION”/>  

              

<!– 设置但JDBC类型为空时,某些驱动程序要指定值,default:OTHER –>  

<setting name=“jdbcTypeForNull” value=“DEFAULT”/>  

              

 <!– 设置触发延迟加载的方法  –>  
<setting name=“lazyLoadTriggerMethods” value=“equals,clone,hashCode,toString”/>  
             

 </settings> 

总结

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

相关文章

  • Java EasyExcel实现合并相同内容单元格与动态标题功能

    Java EasyExcel实现合并相同内容单元格与动态标题功能

    这篇文章主要为大家详细介绍了Java EasyExcel如何实现合并相同内容单元格与动态标题功能,文中的示例代码讲解详细,有需要的小伙伴可以参考下
    2023-12-12
  • Java基于TCP方式的二进制文件传输

    Java基于TCP方式的二进制文件传输

    这篇文章主要为大家介绍了Java基于TCP方式的二进制文件传输,一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Java多线程 中断机制及实例详解

    Java多线程 中断机制及实例详解

    这篇文章主要介绍了Java多线程 中断机制及实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • SpringMVC Hibernate与JPA使用教程

    SpringMVC Hibernate与JPA使用教程

    这篇文章主要介绍了SpringMVC Hibernate与JPA,在正式进入Hibernate的高级应用之前,需要了解声明是数据模型与领域模型,这两个概念将会帮助我们更好的理解实体对象的关联关系映射
    2022-12-12
  • 超全MyBatis动态代理详解(绝对干货)

    超全MyBatis动态代理详解(绝对干货)

    这篇文章主要介绍了超全MyBatis动态代理详解(绝对干货),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • ssm项目实现用户登陆持久化(token)

    ssm项目实现用户登陆持久化(token)

    这篇文章主要介绍了ssm项目实现用户登陆持久化(token),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详解SpringBoot构建的Web项目如何在服务端校验表单输入

    详解SpringBoot构建的Web项目如何在服务端校验表单输入

    这篇文章主要介绍了详解SpringBoot构建的Web项目如何在服务端校验表单输入,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • java五子棋小游戏实现代码

    java五子棋小游戏实现代码

    这篇文章主要为大家详细介绍了java五子棋实现代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • HashMap确定key的存储位置的源码分析

    HashMap确定key的存储位置的源码分析

    HashMap 作为 Java 中最常用的数据结构之一,用于存储和管理键值对,HashMap 基于哈希函数实现,能通过将 key 映射到特定的位置来实现快速存储、查找和删除数据,接下来将从源码角度分析以通俗易懂的方式向大家讲解一下 HashMap 如何确定 key 的存储位置的
    2023-07-07
  • Mybatis一对多与多对一查询处理详解

    Mybatis一对多与多对一查询处理详解

    这篇文章主要给大家介绍了关于Mybatis一对多与多对一查询处理的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论