【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>

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Facebook广告账号Facebook新手如何避免账号被封?

Facebook作为全球最大的社交媒体平台之一&#xff0c;吸引着众多企业和个人用户进行社交和推广。然而&#xff0c;由于种种原因&#xff0c;Facebook账号有可能会被封禁。尤其是新号&#xff0c;在Facebook账号被封后不知道怎么办。今天小编整理了一些新手避免Facebook账号被封…

26-unittest之装饰器(@classmethod)

unittest中的setUp可以在每个测试方法运行前执行&#xff0c;有效的减少了代码量。但有个弊端&#xff0c;比如打开浏览器操作&#xff0c;执行每个测试方法前都要重新打开一次&#xff0c;这样就会浪费很多时间。 是否可以只打开一次浏览器&#xff0c;执行完所有的测试方法后…

Python做Web:深度剖析与多维评价

Python做Web&#xff1a;深度剖析与多维评价 Python作为一种强大的编程语言&#xff0c;在Web开发领域也有着广泛的应用。然而&#xff0c;关于Python做Web的效果如何&#xff0c;却是一个充满争议和困惑的话题。本文将从四个方面、五个方面、六个方面和七个方面进行深入剖析和…

Springboot jar运行时,将jar内的文件拷贝到文件系统中

背景 因为执行需要&#xff0c;需要把jar内templates文件夹下的的文件夹及文件加压到宿主机器的某个路径下&#xff0c; 以便执行对应的脚本文件 PS: 通过类加载器等方式&#xff0c;直接getFile遍历文件&#xff0c;在idea中运行是没问题的&#xff0c;但是当打包成jar运行就会…

从零手写实现 nginx-07-大文件传输 分块传输(chunked transfer)/ 分页传输(paging)

前言 大家好&#xff0c;我是老马。很高兴遇到你。 我们希望实现最简单的 http 服务信息&#xff0c;可以处理静态文件。 如果你想知道 servlet 如何处理的&#xff0c;可以参考我的另一个项目&#xff1a; 手写从零实现简易版 tomcat minicat 手写 nginx 系列 如果你对 n…

金融科技重塑跨境支付:创新引领全球支付新纪元

一、引言 随着全球化的加速和科技的飞速发展,跨境支付作为国际贸易的“血脉”,正经历着前所未有的变革。金融科技以其强大的创新能力和技术支撑,正在重塑跨境支付领域的格局,推动全球支付行业向更加高效、安全、便捷的方向发展。本文将深入探讨金融科技如何引领跨境支付的创…

Python高效计算库Joblib的详细入门教程

文章目录 1. Joblib库是什么&#xff1f;2. 核心功能介绍及演示2.1 高效序列化和反序列化对象2.2 快速磁盘缓存2.3 并行计算 1. Joblib库是什么&#xff1f; Joblib 是一个用于在 Python 中进行高效计算的开源库&#xff0c;提供了一些用于内存映射和并行计算的工具&#xff0…

图分类之Hierarchical Graph Differentiable Pooling (下)

作者代码链接 https://github.com/RexYing/diffpool 1. paper中介绍的图池化机制 SoftPoolingGcnEncoder 是为图结构数据设计的神经网络模型。它通过结合分层池机制扩展了传统图卷积网络&#xff08;GCN&#xff09;的功能。这种池化机制通过逐步减少节点数量&#xff0c;同…

【Mongodb】Mongodb亿级数据性能测试和压测

一&#xff0c;mongodb数据性能测试 如需转载&#xff0c;请标明出处&#xff1a;https://zhenghuisheng.blog.csdn.net/article/details/139505973 mongodb数据性能测试 一&#xff0c;mongodb数据性能测试1&#xff0c;mongodb数据库创建和索引设置2&#xff0c;线程池批量…

React+TS前台项目实战(一)-- 项目初始化配置及开此系列的初衷

文章目录 前言一、初始化项目二、基础配置1. 项目目录及说明如下2. TS版本使用Craco需注意 总结 前言 前面 后台管理系统实战 系列教程暂时告一段落了&#xff0c;想了解全局各种配置的可自行查看。本次教程将重点介绍React前台项目的实操&#xff0c;关于具体的配置&#xff…

龙迅LT8712X TYPE-C或者DP转HDMI加VGA输出,内置MCU,只是IIS以及4K60HZ分辨率

龙迅LT8712X描述&#xff1a; LT8712X是一种高性能的Type-C/DP1.2到HDMI2.0和VGA转换器&#xff0c;设计用于将USB Type-C源或DP1.2源连接到HDMI2.0和VGA接收器。LT8712X集成了一个DP1.2兼容的接收器&#xff0c;一个HDMI2.0兼容的发射机和一个高速三角机窝视频DAC。此外&…

Python 可变长参数的魔法:灵活函数设计的秘密

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 什么是可变长参数&#xff1f; 在 Python 中&#xff0c;可变长参数允许你向函数传入任意数量的参数&#xff0c;而无需预先定义它们的个数。这为编写更加灵活和通用的函数提供了可能。可变长参数主要有两种形式&am…

记录某书请求返回406及响应{“code“:-1,“success“:false}

今天测试某个平台的爬虫时使用requests post请求正常写了个测试脚本把各种参数带上出来以后出现了406情况&#xff0c;和网站数据是完全一样的 以为是 X-S、X-T参接不对&#xff0c;但在postman里测试又是可以的成功&#xff0c;以为是检验了参数顺序&#xff0c;测试发现也没…

JavaSE基础语法合集

随着不断学习&#xff0c;我们已经走完了JavaSE基础语法的所有内容&#xff0c;博主的单独语法篇共十二篇&#xff0c;感兴趣的也可以去看看&#xff0c;内容基本一致&#xff0c;目录是重新排布的&#xff0c;数组和方法都在初识Java章节。 适合&#xff1a;老手复习和新手从零…

Linux下的Git应用及配置

1、卸载 2、安装 3、创建并初始化 4、配置 &#xff08;附加删除语句&#xff09; 5、查看&#xff08;tree .git/&#xff09; 6、增加和提交 7、打印日志 8、验证已操作工作

sc.tl.rank_genes_groups()问题

今天被问到了一个关于sc.tl.rank_genes_groups()的奇怪的问题 import scanpy as sc import pandas as pd import numpy as np import seaborn as sns import matplotlib.pyplot as plt # from CellDART import da_cellfraction # from CellDART.utils import random_mix from…

谷歌个人开发者账号“14+20”封测没通过?你可能忽视了这个细节

众所周知&#xff0c;在Google play平台如果使用个人开发者账号上架应用&#xff0c;在提审正式版应用前&#xff0c;需要满足20人连续封闭测试14天的要求&#xff0c;不少开发者在这个阶段遇到了问题&#xff0c;被谷歌认为没满足要求&#xff0c;从而不能上架应用。 为什么你…

国产开发板——香橙派Kunpeng Pro的上手初体验

开发板&#xff08;Development Board&#xff09;是一种特殊的电子产品&#xff0c;它的主要目的是为了帮助开发者快速地设计、测试和验证电子产品的硬件和软件设计。开发板通常提供了一个完整的硬件平台&#xff0c;包括微控制器、存储器、接口和其他外围设备&#xff0c;开发…

性能狂飙:SpringBoot应用优化实战手册

在数字时代&#xff0c;速度就是生命&#xff0c;性能就是王道&#xff01;《极速启航&#xff1a;SpringBoot性能优化的秘籍》带你深入SpringBoot的内核&#xff0c;探索如何打造一个飞速响应、高效稳定的应用。从基础的代码优化到高级的数据库连接池配置&#xff0c;再到前端…

【深度学习-第6篇】使用python快速实现CNN多变量回归预测(使用pytorch框架)

上一篇我们讲了使用CNN进行分类的python代码&#xff1a; Mr.看海&#xff1a;【深度学习-第5篇】使用Python快速实现CNN分类&#xff08;模式识别&#xff09;任务&#xff0c;含一维、二维、三维数据演示案例&#xff08;使用pytorch框架&#xff09; 这一篇我们讲CNN的多变…