Mybatis插入数据null的的解决方案

MySQL设置有默认值但插入数据为什么变为了null? MySQL设置有默认值但插入数据为什么变为了null? 情景复现: 本周我在观察前不久自己上线的几个功能是否正常运行时,发现了一个奇怪的点,在开发的时候,我在某个SQL表中给某个字段设置了默认值,但是这个字段最终录入的数据都是NULL。我直接好家伙,这下我又写了个BUG出来!!! 这可不是期望中的结果。下面我用一个例子对情景进行复现。 创建一个employee表: create table employee ( id bigint auto_increment not null 阅读详情
传入一个数据库允许为null的paramterType对象,Mybatis报错插入不能为空,此时不仅需要配置javaType,还有为其指定jdbcType,例如下面的name属性便可轻松插入空数值。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.czyfwpla.xm.mapper.SpotMapper" >
<resultMap id="SpotResultMap" type="cn.czyfwpla.xm.model.Spot">
<id column="id" property="id" javaType="java.lang.String" />
<id column="name" property="name" javaType="java.lang.String" jdbcType="VARCHAR" />
<id column="description" property="description" javaType="java.lang.String" />
<id column="headImg" property="headImg" javaType="java.lang.String" />
<id column="price" property="price" javaType="java.math.BigDecimal" />
<id column="route" property="route" javaType="java.lang.String" />
<id column="strategy" property="strategy" javaType="java.lang.String" />
</resultMap>
<insert id="addSpot" parameterType="cn.czyfwpla.xm.model.Spot" >
INSERT INTO
spot
(id,name,description,headImg,price,route,strategy)
VALUES
(#{id}, #{name}, #{description},#{headImg},#{price},#{route},#{strategy})
</insert>
</mapper>

 附录:javaType与jdbcType的对照表

JDBC Type            Java Type  
CHAR                 String  
VARCHAR              String  
LONGVARCHAR          String  
NUMERIC              java.math.BigDecimal  
DECIMAL              java.math.BigDecimal  
BIT                  boolean  
BOOLEAN              boolean  
TINYINT              byte  
SMALLINT             short  
INTEGER              int  
BIGINT               long  
REAL                 float  
FLOAT                double  
DOUBLE               double  
BINARY               byte[]  
VARBINARY            byte[]  
LONGVARBINARY        byte[]  
DATE                 java.sql.Date  
TIME                 java.sql.Time  
TIMESTAMP            java.sql.Timestamp  
CLOB                 Clob  
BLOB                 Blob  
ARRAY                Array


批量插入,部分参数为null,报sql语法错误解决方案 阅读详情

相关推荐

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 258

Mybatis处理null字段的插入

Mybatis插入null字段时,mybatis无法将java类型转化成mysql类型,得加#{,jdbcType.类型} 1.用if test null 过滤掉 null,字段凡是为 null的字段,一律不写在sql里面 2.用jdbcType.sql类型,这样为null的字段插入时,mybatis可以识别,并且将java的null转化成mysql的null ...

Chen4852010的博客 4937

实测昇腾310P跑Qwen3有多慢?手把手带你部署vLLM并记录性能数据

本文实测了昇腾310P在vLLM框架下部署Qwen3模型的性能表现,详细记录了2.5 tokens/s的生成速度及其技术瓶颈。通过环境搭建、基准测试和深度分析,揭示了计算资源利用率不足等关键问题,并提供了实用的优化技巧与监控方案,帮助开发者更好地理解和优化昇腾平台上的大模型部署。

weixin_28724319的博客 893

mybatis添加空值 向数据库中添加null

mybatis添加空值 我们添加数值时可能是空值,如果我们不做处理,那么在数据库中存储的将是"" 空字符串,如果有重复约束将会导致下一次插入数据失败,那么该如何解决这个问题呢? 在对象赋值不完整的字段后添加 jdbcType 如: <insert id="addAcc" parameterType="com.by.tsgl.bean.User"> insert into user (user_id,user_account,user_email,use

蓝缕启林 8420

x86架构学习之中断

外部中断,一般是由CPU的外部引脚电信号触发,这些引脚留给硬件厂商去定义中断,例如主板厂商可以将USB中断挂载70号中断引脚上,MCU厂商可以将片上外设(SPI、I2C等)的中断挂载在指定中断线上。中断描述符主要用于说明该中断的入口地址,中断描述符表则是将中断描述符一项一项管理在一个数组中,每一项中断描述符占用8个字节(64位模式下,占用16字节),其。简称中断,后文如果没特别说明,中断都指外部中断,由外部IO事件触发,由于时钟源来自CPU外部,与CPU时钟不同源,因此是异步事件。

qq_26962739的博客 1571

告别‘打架’的检测头:手把手教你用PyTorch实现YOLOv11解耦头(附完整代码)

本文详细解析了YOLOv11解耦检测头的创新设计与PyTorch实现,通过解耦分类和回归任务,显著提升目标检测性能。文章包含完整的代码实现、架构设计解析及工程调优技巧,帮助开发者深入理解并应用这一先进技术。

weixin_29031057的博客 301

mybatis做批量插入时,当数据为null时的处理

当mybatis做批量插入时,插入的字段可能没值,此时不做处理的话,mybatis会报异常,执行失败 根据mybatis的官网介绍,此时需要添加对应的jdbcType类型映射,以处理null值 mybatis和数据库字段的对应关系 Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType BIGINT BIGINT JdbcType BINARY ...

一步一个脚印_binding 6952

使用Simulink进行基于IIR滤波器的设计与稳定性分析仿真

IIR滤波器的稳定性与其系统函数的极点位置密切相关。如果所有极点都位于Z平面的单位圆内,则该滤波器是稳定的;否则,滤波器将是不稳定的。在设计IIR滤波器时,确保其稳定性对于避免输出信号发散至关重要。明确你的系统需求,比如输入信号类型(如正弦波)、采样率、IIR滤波器的设计参数(如滤波器类型、阶数、截止频率等)。假设我们需要设计一个低通IIR滤波器,用来去除高于500Hz的所有频率成分,保留低于500Hz的信号成分。采样率为8kHz。

xiaoheshang_123的博客 150

解决mybatis插入null方案

一、指定插入值得jdbcType,将sql改成 insert into user(id,name) values(#{id,jdbcType=VARCHAR},#{name,jdbcType=VARCHAR})

sebeefe的博客 1888

uniapp - 解决在线预览PDF文件空白打不开的问题,无论是后端下载二进制文件流pdf还是本地插件或JS预览查看打开白屏不显示,详细排查解决(适用于移动端H5网页、安卓/苹果app、微信小程序)

uniapp App端 实现pdf文件预览打开白屏解决,uniapp 在线预览pdf打开一片空白,跨域白屏,uni-app中使用WebView预览PDF文件打开空白,微信小程序(uniapp)预览PDF空白怎么办,下载PDF文件流后打开空白或无法打开的问题,Uniapp H5网页下载二进制pdf文件页面空白以及解决文件损坏打不开的情况,Uniapp app在线预览pdf文件流,PDF加载出来怎么办,服务器后端返回PDF文件流后前端进行下载但打开后一片白屏,解决pdf文件流,预览全是空白页,pdf文件流,下载

🏆 前端领域优质创作者 1万+

【数据集】全球预报系统GFS概述:数据下载及处理

【数据集】全球预报系统GFS概述:数据下载及处理

WW、forever的博客 5750

mybatis插入数据时处理为null的属性

在做项目的时候,数据库中的所有字段被设置为全都不能为null,但是在我们开发过程中,插入一些记录的时候,实体类中的一些字段如果页面没有传入,则默认就会被设置为null,这样的话,在执行插入语句的时候,数据库就会报错,说指定的列不能为null,这样数据就无法插入。 在网上找了一下,都没有这种处理的方式,但是找到了mybatis的类型转换,说的是在java中的类型和数据库中的类型不一致的时候,需要自

zsz459520690的专栏 6万+

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1068

Mybatis插入时间为null解决方案

今天在开发项目的时候遇到了一个之前没有遇到过的问题,所以在这里记录下。 我们在实际项目开发中,都会遇到类似于这样的操作:需要将一个表中的数据查询出来之后做处理,然后再插入到另外一个表中,这个是再常见不过的了。 那么就会有以下这种问题,上一个表中查询出来的数据为null的时候,mybatis会怎么去将它进行插入呢? 首先,我说明一下我查询出来的是时间类型,而且有可能字段null,然后插入的时候...

abzz的博客 8531

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

mybatis insert 插入数据成功后返回值为 null

最近发现,使用ibatis的sqlMap.insert()方法时,不管怎么样,返回的结果总是null。那么如何让其返回最新插入的那条记入的id呢?     首先:   将原来的insert语句加上标签,如: [xhtml] view plaincopy insert id="insertUserByName">        

asunjianren的专栏 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Mybatis,Oracle数据库和MySQL数据库添加null值

想Oracle数据库和MySQL数据库添加null值。

哈哈 1892

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Mybatis向Oracle数据库写数据时报错:无效的列类型1111

1.出现这种报错最常见就是将null值插入数据库而未指定jdbcType。MySQL下直接插入null值时,在该字段允许为空时是不会有问题,Oracle就不行,需要显式指定jdbcType: #{uploadTime,jdbcType=DATE} 2.另外,亲测当数据库表名写错时也会出现这种情况,因此若确定已显示指定了jdbcType,可以检查一下xml里是否存在写错数据库表名的情况。 附...

克格莫(有需要的私信) 3810

MyBatis-plus 批量插入的通用方法使用

中默认提供了一个批量保存数据到数据库的方法,也就是 接口方法。这个方法的实现为 ,其源码实际处理的关键如下,从中可以知道 并不是一个真正的批量插入数据的方法 2. MyBatis-plus 的批量插入方法 2.1 通用批量插入方法 InsertBatchSomeColumn 事实上 提供了真正的批量插入方法 ,只不过这个方法只在 MySQL 数据库下测试过,所以没有将其作为默认通用方法添加到 中 2.2 InsertBatchSomeColumn 的使用 由于 是框架已经定义好的通用方法,所以使用者

web15870359587的博客 1291

关于mybatis查询返回List<String>结果为[null],size是1的原因分析

前言 在项目中偶然遇到一个问题,报空指针异常,经排查,是mybatis查询结果映射到List时映射为了[null]数组。这就导致CollectionUtils.isEmpty判断为false。 问题复现 首先,我们准备三张表,t_user、t_user_role 和t_role,结构如下: CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT '' COMMENT '

yangjnsjbad的博客 6746

Oracle数据库mybatis 插入空值时的处理

Oracle数据库mybatis 插入空值时报错(with JdbcType OTHER)的两种解决方案在使用Mybatis 3 时,发现了这个问题,当插入数据时,如果有一个字段为空值时,系统会报异常,导致插入数据失败。异常信息类似:org.springframework.jdbc.UncategorizedSQLException:Error setting null for parameter...

秋芝林的专栏 8445

java.sql.SQLIntegrityConstraintViolationException: ORA-01400: 无法将 NULL 插入XXX

问题 在使用 mybatis 将数据插入到oracle的时候,出现了标题所示错误 解决 原因是该字段设置成了not null,我们可以利用如下语句: ALTER TABLE 表名 MODIFY 字段名 NOT NULL; COMMIT; 执行完后就不会因为not null报错了,如果该字段为主键不建议这样操作 ...

一如年少丶的博客 3949

mysql数据库过滤空值,使用Insert插入数据时,没有过滤为null的值

当前使用版本(必须填写清楚,否则不予处理)试过三个版本2.1.92.33.0-RC该问题是怎么引起的?只有新增的时候没有过滤为null的字段,更新时过滤了使用的是mapper.insert()方法在全局配置里面设置了dbConfig.setFieldStrategy(FieldStrategy.NOT_NULL);配置如下GlobalConfig globalConfig = new Global...

weixin_39648297的博客 1245

TK mybatis插件通用mapper与oracle的几个坑

最近公司有几个项目的数据库用的oracle,有段时间没用,然后果断就掉坑里面了,记录几个比较有代表性的。 1:关于oracle的批量数据插入,我用TK通用mapper的insertList方法自动拼接出来的sql是这样的 insert into table(column1,column2)values (value1,value2), (value3,value4)。。。 咋一看没啥问题啊,...

qq_39511916的博客 6814

同学遇到的问题,数据库某个字段设置了默认值,但是传入的值为null,关键还插入进去了,怎么补救?

问题分析: 我同学用到mybatis的框架,由于前端这个字段传入的值为Null,导致插入语句的时候这个值有值,所以为nulll,那这种情况有可能在后期的业务场景会出现问题,所以,我们要避免这种情况的出现。 解决办法: 1.sql自己写,不使用mybatis的insert方法,将需要的字段加上null和空的判断 2.使用mybatis的insertSelective方法,它会将值为nulll的去除 然后再以这个字段等于null作为条件更改已经填入Null的原数据,将其改为默认值 ...

weixin_49100429的博客 2471

mybatis中Oracle参数为NULL错误解决

在Mybatis操作Oracle数据库的时候(PS:mysql中不会出现),会遇到个小问题,当数据库为Oracle时候,插入某个参数数据如果为null,mybatis会报错,提示类型不正确,原因是当插入数据为null类型的时候,mybatis会自动转换为JdbcType.OTHER类型,因此需要修改一下参数的转换类型有两种方式可以解决:1.公共配置方法:在Mybatis配置中设置jdbcTypeF...

漫天雪_昆仑巅 5648

Mysql数据表字段设置了默认值,插入数据后默认字段的值却为null,不是默认值...

我将mysql的数据表的某个字段设置了默认值为1,当向该表插入数据的时候该字段的值不是默认值,而是null。 我的错误原因: 对数据库的操作我使用了持久化工具mybatis,插入数据的时候插入的是整个实体,直接使用的是持久层的insert(实体对象)方法插入的数据 这样就会出现一个问题,当实体对象中某个属性值为空时,对应的数据库的字段就会插入null值,而默认值是插入时不指定...

ageng2545的博客 1987
上一篇: vue2.0-axios-post的使用,以及前后台跨域搭配
下一篇: 采坑ajax
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值