mybatis批量插入时,有字段可能为null会报错_mybatis 批量插入有些字段是空值-程序员宅基地

技术标签: mybatis  插入null  mybatis批量操作  

解决方案

在指定了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> 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Emma_1212/article/details/108078239

智能推荐

《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型_数学模型第五版章节综述-程序员宅基地

文章浏览阅读875次,点赞18次,收藏16次。《数学模型(第五版)》学习笔记(2)第3章 简单的优化模型 第4章 数学规划模型_数学模型第五版章节综述

VUE2从入门到精通(一)

************************************************************************************安装装饰器。【1】用到了v-for,就要绑定一个:key,而且建议用id绑定。// 告诉webpack @表示src这一层目录!【3】v-text会覆盖元素内容原有的内容,用的不多。***********************************************************************完整代码。

PS 2018

这个时候会弹出一个对话框,找到你安装的PS文件夹,默认路径一般是C:\Program Files\Adobe\Adobe Photoshop CC 2018,双击“amtlib.dll”直接替换即可。找到并选择“Adobe Photoshop CC 2017”(这是可以破解2018版本的,亲测可用,大可放心),然后点击右下角按钮“Install”链接: https://pan.baidu.com/s/12DdGwb7SyHA2jAdO51m1ag?清楚桌面战场,再次打开软件,完美!

开源的蓝牙协议栈分类:BTStack,Mynewt Nimble,bluez,zephyr等等_开源蓝牙协议栈-程序员宅基地

文章浏览阅读3.8k次,点赞2次,收藏11次。1):bluedroid,Android系统底层蓝牙协议栈。2):bluez,linux系统官方蓝牙协议栈,http://www.bluez.org/。3):Zephyr物联网实时操作系统下的蓝牙协议栈,https://github.com/zephyrproject-rtos/zephyr/tree/master/samples/bluetooth。4):nimble, https://github.com/RT-Thread-packages/nimble。5):btstack,https://gith_开源蓝牙协议栈

《App备案入门指南》:拯救备案小白,让您不再担心-程序员宅基地

文章浏览阅读1k次,点赞15次,收藏19次。各大云接入商ICP代备案管理系统均已正式支持。为便于大家快速学习了解App备案的相关知识,创孵猫通过网上搜集和整理为大家准备了一些基础信息与常见问题。_app备案

近世代数--特征--环的特征,域的特征-程序员宅基地

文章浏览阅读8k次,点赞8次,收藏23次。近世代数--特征--环的特征,域的特征博主是初学近世代数(群环域),本意是想整理一些较难理解的定理、算法,加深记忆也方便日后查找;如果有错,欢迎指正。我整理成一个系列:近世代数,方便检索。..._环的特征

随便推点

数据脱敏 用*替代实现_字符串非定长脱敏-程序员宅基地

文章浏览阅读635次。一 什么是数据脱敏数据脱敏(Data Masking),顾名思义,是屏蔽敏感数据,对某些敏感信息(比如,身份证号、手机号、卡号、客户姓名、客户地址、邮箱地址、薪资等等 )通过脱敏规则进行数据的变形,实现隐私数据的可靠保护。业界常见的脱敏规则有,替换、重排、加密、截断、掩码,用户也可以根据期望的脱敏算法自定义脱敏规则。二 姓名脱敏小案例 2.1 定长脱敏 所谓定长脱敏,就是替换的’*'的长度固定,效果如下图所示SELECT CONCAT( LEFT ( real_name, 1._字符串非定长脱敏

Qt表头铺满表格顶部并在界面拖放时按比例缩放_tabwight控件的几个tab将tabwiget的顶部占满-程序员宅基地

文章浏览阅读1.6k次,点赞5次,收藏5次。Qt表头宽度随着窗体等比例缩放。_tabwight控件的几个tab将tabwiget的顶部占满

React-Mock数据_react mock模拟-程序员宅基地

文章浏览阅读501次,点赞10次,收藏5次。React中使用Mock数据主要是为了模拟后端接口和数据,以便前端开发可以在没有实际后端支持的情况下进行。_react mock模拟

Python 资源大全中文版-程序员宅基地

文章浏览阅读201次。我想很多程序员应该记得GitHub上有一个Awesome - XXX系列的资源整理。awesome-python是vinta发起维护的Python资源列表,内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由伯乐在线持续更新。Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细..._python-epydoc 在centos中对应的命令

高德地图覆盖物改为闪烁点样式_高德点标记闪烁-程序员宅基地

文章浏览阅读4.2k次。这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar_高德点标记闪烁

短视频交友系统搭建重点,会用到哪些三方服务?

在搭建短视频交友系统时,需要根据实际需求选择合适的第三方服务,并与这些服务提供商建立良好的合作关系,确保服务的稳定性和可靠性。在搭建短视频交友系统时,为了确保系统的稳定性、安全性和用户体验,通常需要用到多种第三方服务。可以选择云存储服务,如阿里云OSS、腾讯云COS等,它们提供高可靠性、高扩展性的存储解决方案。:如阿里云、腾讯云等,提供稳定、可扩展的服务器资源,确保短视频交友系统能够应对高并发和大规模用户访问。:根据用户的观看历史、兴趣偏好等信息,为用户推荐合适的短视频和交友对象,提升用户体验和留存率。