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> 

总结

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

相关文章

  • SpringBoot+Vue实现EasyPOI导入导出的方法详解

    SpringBoot+Vue实现EasyPOI导入导出的方法详解

    项目开发过程中,很大的需求都有 导入导出功能。本文将利用SpringBoot+Vue实现EasyPOI导入导出功能,感兴趣的可以了解一下
    2022-08-08
  • JMeter断言之json断言解读

    JMeter断言之json断言解读

    这篇文章主要介绍了JMeter断言之json断言问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java Object类详解_动力节点Java学院整理

    Java Object类详解_动力节点Java学院整理

    Java作为一个庞大的知识体系,涉及到的知识点繁多,本文将从Java中最基本的类java.lang.Object开始谈起,对java object类相关知识感兴趣的朋友一起学习吧
    2017-04-04
  • SpringMVC中的HandlerMapping和HandlerAdapter详解

    SpringMVC中的HandlerMapping和HandlerAdapter详解

    这篇文章主要介绍了SpringMVC中的HandlerMapping和HandlerAdapter详解,在Spring MVC中,HandlerMapping(处理器映射器)用于确定请求处理器对象,请求处理器可以是任何对象,只要它们使用了@Controller注解或注解@RequestMapping,需要的朋友可以参考下
    2023-08-08
  • java中线程安全的list详细特性和用法

    java中线程安全的list详细特性和用法

    这篇文章主要给大家介绍了关于java中线程安全的list详细特性和用法的相关资料,Java中有多种线程安全的List,其中比较常用的有Vector、Collections.synchronizedList()和CopyOnWriteArrayList三种方式,需要的朋友可以参考下
    2024-03-03
  • 简单了解Spring Cloud搭建Config过程实例

    简单了解Spring Cloud搭建Config过程实例

    这篇文章主要介绍了简单了解Spring Cloud搭建Config过程实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • 关于Kafka消费者订阅方式

    关于Kafka消费者订阅方式

    这篇文章主要介绍了关于Kafka消费者订阅方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • synchronized底层实现原理

    synchronized底层实现原理

    这篇文章主要介绍了synchronized底层实现原理,想弄懂它的实现synchronized的原理,我们只能通过看编译好的字节码文件,下面文章的详细内容,我们就先从测试类开始吧,需要的小伙伴可以参考一下
    2022-01-01
  • java中有无参数和返回值的方法详解

    java中有无参数和返回值的方法详解

    这篇文章主要介绍了java中有无参数和返回值的方法详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • MapStruct表达式应用及避坑详解

    MapStruct表达式应用及避坑详解

    一不小心踩了MapStruct表达式的坑,发现了一个在官方文档上都找不到的功能,有必要记录下。MapStruct是一个代码生成器,它基于约定优于配置的方法大大简化了Java Bean类型之间的映射的实现
    2022-02-02

最新评论