【Mybatis】INSERT INTO 遇到NULL怎么处理?

目录标题

  • 背景-使用Mybatis手写批量插入Insert方法
    • 测试核心代码,author字段为null,插入条件怎么写?
  • MybatisPlus解决方案
    • 自动填充字段
  • Mybatis解决方案
    • if标签处理
  • 问题:如果不在工程里面设置默认值?如何直接使用数据库的默认值?

背景-使用Mybatis手写批量插入Insert方法

在这里插入图片描述
表中设置都为非空字段,author默认值为sys。

测试核心代码,author字段为null,插入条件怎么写?

List<Article> ls = new ArrayList<>();
Article article = new Article();
article.setTitle("123");
article.setContent("666");
ls.add(article);
try {
    articleService.insertBatch1(ls);
} catch (Exception e) {
    e.printStackTrace();
}

MybatisPlus解决方案

自动填充字段

https://baomidou.com/guides/auto-fill-field/#1-定义实体类

  • FieldFill.DEFAULT 完全依赖数据库默认值
  • FieldFill.INSERT 插入时填充
  • FieldFill.UPDATE 更新时填充

FieldFill.DEFAULT 完全依赖数据库默认值
在这里插入图片描述
不做任何处理,author为空,报错了

<!-- 批量插入Article -->
<insert id="insertBatch1" parameterType="java.util.List">
    INSERT INTO article(title, content, author, create_time, update_time)
    VALUES
    <foreach item="article" index="index" collection="list"
             open="(" separator=")," close=")">
        #{article.title}, #{article.content},#{article.author},
        NOW(), NOW()
    </foreach>
</insert>
org.springframework.dao.DataIntegrityViolationException: 
### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'author' cannot be null
### The error may exist in file [/Users/SpringBootDemo/SpringBootDemo-web/target/classes/mapper/ArticleMapper.xml]
### The error may involve com.example.sbb.SpringBootDemo.demos.mapper.ArticleMapper.insertBatch1-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO article(title, content, author, create_time, update_time)         VALUES          (               ?, ?,?,             NOW(), NOW()          )
### Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'author' cannot be null
; Column 'author' cannot be null

FieldFill.INSERT 插入时填充
在这里插入图片描述
在这里插入图片描述

xml的insertBatch1方法没改,插入成功,原理应该是拦截器处理
在这里插入图片描述

Mybatis解决方案

if标签处理

<!-- 批量插入Article -->
<insert id="insertBatch2" parameterType="java.util.List">
    INSERT INTO article(title, content, author, create_time, update_time)
    VALUES
    <foreach item="article" index="index" collection="list"
             open="(" separator=")," close=")">
        #{article.title}, #{article.content},
        <if test="article.author != null">#{article.author}</if>
        <if test="article.author == null">0</if>,
        NOW(), NOW()
    </foreach>
</insert>

本方法也能成功,依赖动态标签,动态拼接SQL

问题:如果不在工程里面设置默认值?如何直接使用数据库的默认值?

<!-- 批量插入Article -->
<insert id="insertBatch1" parameterType="java.util.List">
     INSERT INTO article(title, content, author, create_time, update_time)
     VALUES
     <foreach item="article" index="index" collection="list"
              open="(" separator=")," close=")">
         #{article.title}, #{article.content},
         IFNULL(#{article.author}, DEFAULT(author)),
         NOW(), NOW()
     </foreach>
 </insert>

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685045.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt窗口与对话框

目录 Qt窗口 1.菜单栏 2.工具栏 3.状态栏 4.滑动窗口 QT对话框 1.基础对话框QDiaog 创建新的ui文件 模态对话框与非模态对话框 2.消息对话框 QMessageBox 3.QColorDialog 4.QFileDialog文件对话框 5.QFontDialog 6.QInputDialog Qt窗口 前言&#xff1a;之前以上…

Java Logback 基本操作

一、环境搭建 配置 maven &#xff1a; JavaWeb开发中的Maven使用_javaweb项目中如何使用manven项目-CSDN博客 配置 eclipse &#xff1a; eclipse新建Maven web项目全过程-CSDN博客 二、下载Logback 下载地址&#xff1a; Maven Repository: ch.qos.logback logback-clas…

系统架构设计师【补充知识】: 应用数学 (核心总结)

24.1 图论之最小生成树 (1)定义: 在连通的带权图的所有生成树中&#xff0c;权值和最小的那棵生成树(包含图中所有顶点的树)&#xff0c;称作最小生成树。 (2)针对问题: 带权图的最短路径问题。 (3)最小生成树的解法有普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法&#xff0c;我…

智能管理,无忧报修——高校校园报事报修系统小程序全解析

随着数字化、智能化的发展&#xff0c;高校生活也迎来了前所未有的变革。你是否还在为宿舍的水龙头漏水、图书馆的灯光闪烁而烦恼&#xff1f;你是否还在为报修流程繁琐、等待时间长而焦虑&#xff1f;今天&#xff0c;这一切都将成为过去式&#xff01;因为一款震撼高校圈的新…

01 - Maven入门安装

目录 1、软件下载地址 2、安装的版本 3、安装的条件 4、软件的结构 5、Maven环境配置 5.1、配置MAVEN_HOME 5.2、配置Path 5.3、命令测试&#xff08;cmd窗口&#xff09; 6、Maven的功能配置 6.1、配置本地仓库地址 6.2、配置国内阿里镜像 6.3、配置jdk8版本项目构…

【Meetup】探索Apache SeaTunnel的二次开发与实战案例

在数据科技快速演进的今天&#xff0c;业务场景的复杂化和数据量的激增&#xff0c;推动了大数据技术的迅速发展&#xff0c;在众多开源大数据处理工具中&#xff0c;Apache SeaTunnel以其强大的数据集成能力&#xff0c;成为众多企业的首选。 但随着应用深入&#xff0c;企业面…

如何搭建一台永久运行的个人服务器?

一、前言 由于本人在这段时候&#xff0c;看到了一个叫做树莓派的东东&#xff0c;初步了解之后觉得很有意思&#xff0c;于是想把整个过程记录下来。 二、树莓派是什么&#xff1f; Raspberry Pi(中文名为树莓派,简写为RPi&#xff0c;(或者RasPi / RPI) 是为学习计算机编程…

微前端基于qiankun微前端应用间通信方案实践

【qiankunvue】微前端子应用之间的通信方式总结 ------------------------------------------------------------------补充--------------------------------------------------------- 什么是微前端&#xff1f; 微前端 微前端是一种多个团队通过独立发布功能的方式来共同构…

在人工智能背景下,程序员要有什么职业素养,怎么改进

文章目录 1. 持续学习和适应能力原因改善方法 2. 跨学科知识原因改善方法 3. 高效的计算资源利用原因改善方法 4. 模型解释性和可控性原因改善方法 5. 数据隐私和安全意识原因改善方法 在AI大模型的背景下&#xff0c;程序员要有什么职业素养&#xff0c;怎么改进&#xff0c;才…

行心科技与研草堂携手,共绘医康养新生态的食疗养生蓝图

在健康产业蓬勃发展的当下&#xff0c;广州市行心信息科技有限公司&#xff08;以下简称“行心科技”&#xff09;与研草堂携手合作&#xff0c;共同亮相于2024年第34届健博会暨中国大健康产业文化节。现场&#xff0c;行心科技董事长林泳强、顾问王志文老师与研草堂的厂商齐聚…

WPS的JSA算国产编程语言,IDE,脚本工具吗?javascript代替VBA

现在wps用javascript代替VBA&#xff0c;应该算很成功了吧。 如果可以独立出来变成一个脚本语言&#xff0c;简单的IDE(本身也有类似VBA&#xff0c;不要寄宿在WPS里面运行&#xff0c;这样就可以变成VBS一样执行脚本了&#xff0c;用来开发按键精灵,LUA一样的脚本很不错 以下…

计算机组成结构—多处理器

目录 一、SISD、SIMD、MIMD 和向量处理器 1. 费林分类法 2. SIMD 和向量处理器 二、硬件多线程 三、多核处理器和 SMP 1. 多核处理器 2. 共享内存多处理器&#xff08;SMP&#xff09; 3. MPP 和集群 一、SISD、SIMD、MIMD 和向量处理器 通过改进系统结构&#xff0c;可…

31|HTTP3:甩掉TCP、TLS 的包袱,构建高效网络

前面两篇文章我们分析了HTTP/1和HTTP/2&#xff0c;在HTTP/2出现之前&#xff0c;开发者需要采取很多变通的方式来解决HTTP/1所存在的问题&#xff0c;不过HTTP/2在2018年就开始得到了大规模的应用&#xff0c;HTTP/1中存在的一大堆缺陷都得到了解决。 HTTP/2的一个核心特性是…

carbondata入库数据查询异常排查

1&#xff0c;背景&#xff1a;carbondata的入库segments对应的状态都是success&#xff0c;但是查询的时候报错&#xff0c; 2&#xff0c;排查内容 1&#xff0c;segments的状态 success 2&#xff0c;任务执行记录日志 正常 3&#xff0c;找到对应查询的天&#xff0c;指定对…

RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,

报错信息如下&#xff1a; Error during startup: {error,{schema_integrity_check_failed,[{table_attributes_mismatch,rabbit_user,[username,password_hash,tags,hashing_algorithm,limits],[username,password_hash,tags,hashing_algorithm]},{table_attributes_mismatch…

巴拿马太平洋万国博览会学会参加济州论坛 韩国工作会议同期举办

本届论坛以“为更好的世界而合作”为主题&#xff0c;聚焦国际经济、政治、文化等领域的热点问题&#xff0c;寻求合作与发展的新机遇。天狮集团派员参加&#xff0c;将与全球商界领袖、政要名流面对面交流&#xff0c;共同探讨全球合作与发展的新机遇和新挑战。对于中国企业而…

【Vue】普通组件的注册使用-局部注册

文章目录 一、组件注册的两种方式二、使用步骤三、练习 一、组件注册的两种方式 局部注册&#xff1a;只能在注册的组件内使用 ① 创建 .vue 文件 (三个组成部分) 以.vue结尾的组件&#xff0c;一般也叫做 单文件组件&#xff0c;即一个组件就是组件里的全部内容 ② 在使用的组…

Crosslink-NX器件应用连载(9): USB3.0相机

作者&#xff1a;Hello&#xff0c;Panda 大家晚上好&#xff0c;很久没有分享设计案例了&#xff0c;实在是太忙了&#xff0c;精力十分有限&#xff0c;今天分享一个CrosslinkNX系列器件用作USB3.0相机的案例。其实就是分享一下使用CrosslinkNX器件设计USB3.0相机主要有两种…

数值实验的设计与目的,以及算法几种性能指标的含义与区别

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

Qt 窗口居中显示

Qt 窗口居中显示 引言一、窗体的setGeometry函数二、计算屏幕中心然后move三、借助QRect计算四、补充知识点 引言 窗口居中可以提供良好的视觉效果、突出重点内容、提升用户导航和操作的便利性&#xff0c;有助于改善用户体验。 Qt一般情况下&#xff0c;其Mainwindow或弹出的…