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 RabbitMQ的TTL和DLX全面精解

    Java RabbitMQ的TTL和DLX全面精解

    过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。DLX, 可以称之为死信交换机,当消息在一个队列中变成死信之后,它能被重新发送到另一个交换机中,这个交换机就是DLX ,绑定DLX的队列就称之为死信队列
    2021-09-09
  • java用户管理注册功能 含前后台代码

    java用户管理注册功能 含前后台代码

    这篇文章主要介绍了java用户管理注册功能,含前端和后台代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • 利用Java中Calendar计算两个日期之间的天数和周数

    利用Java中Calendar计算两个日期之间的天数和周数

    Java 语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分。日期是商业逻辑计算一个关键的部分。下面这篇文章就给大家介绍了如何利用Java中Calendar计算两个日期之间的天数和周数,下面来一起看看吧。
    2016-12-12
  • Java Caffeine 高性能缓存库详解与使用案例详解

    Java Caffeine 高性能缓存库详解与使用案例详解

    Caffeine是Java生态中最先进的本地缓存库,其 高性能、低延迟 的设计使其成为现代应用的首选,通过灵活的配置和强大的统计功能,开发者可以轻松实现高效的缓存策略,显著提升系统性能,本文介绍Java Caffeine高性能缓存库详解与使用案例,感兴趣的朋友一起看看吧
    2025-10-10
  • 在ssm中使用ModelAndView跳转页面失效的解决

    在ssm中使用ModelAndView跳转页面失效的解决

    这篇文章主要介绍了在ssm中使用ModelAndView跳转页面失效的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Java实战之基于swing的QQ邮件收发功能实现

    Java实战之基于swing的QQ邮件收发功能实现

    这篇文章主要介绍了Java实战之基于swing的QQ邮件收发功能实现,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • 深入理解Java设计模式之抽象工厂模式

    深入理解Java设计模式之抽象工厂模式

    这篇文章主要介绍了JAVA设计模式之抽象工厂模式的的相关资料,文中示例代码非常详细,供大家参考和学习,感兴趣的朋友可以了解下
    2021-11-11
  • Java如何操作集合中的多个元素(批量操作)

    Java如何操作集合中的多个元素(批量操作)

    Java集合框架是一个统一架构,用于表示和操作集合,它提供了一套完整的接口和实现类,用于表示和操作各种集合,这篇文章主要介绍了Java如何操作集合中多个元素的相关资料,需要的朋友可以参考下
    2025-11-11
  • Java报错:FileNotFoundException的解决方案

    Java报错:FileNotFoundException的解决方案

    在Java编程中,FileNotFoundException 是一种常见的受检异常,通常发生在试图打开一个不存在的文件或文件路径错误时,本文将详细探讨FileNotFoundException的成因、解决方案以及预防措施,帮助开发者理解和避免此类问题,需要的朋友可以参考下
    2024-06-06
  • Java 迪杰斯特拉算法实现查找最短距离的实现

    Java 迪杰斯特拉算法实现查找最短距离的实现

    这篇文章主要介绍了Java 迪杰斯特拉算法实现查找最短距离的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论