当前使用版本(必填,否则不予处理)

3.3.1.tmp

该问题是如何引起的?(确定最新版也有问题再提!!!)

集成选装件InsertBatchSomeColumn做批量插入,实体类为null的字段,在生成批量插入SQL语句中会产生null值

重现步骤(如果有就写完整)

产生的sql语句如: insert into(id,name,age) values(1,null,2) 而不是insert into(id,age) values(1,2)

报错信息

Comment From: miemieYaho

肯定会有null

Comment From: heyaping388

有办法不插入null吗?不然表字段的默认值就无效了 都是插入了null

Comment From: miemieYaho

看里面属性进行字段筛选

Comment From: heyaping388

哪里的属性 需要改com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn.java吗

Comment From: heyaping388

MyBatis-Plus 集成选装件InsertBatchSomeColumn批量插入默认会插入null值

是不是要模仿 MyBatis-Plus 集成选装件InsertBatchSomeColumn批量插入默认会插入null值 生成if 脚本

Comment From: miemieYaho

InsertBatchSomeColumn.predicate

Comment From: heyaping388

我是这样写的

MyBatis-Plus 集成选装件InsertBatchSomeColumn批量插入默认会插入null值

但是没有效果 求指点 万分感谢

Comment From: miemieYaho

那是筛选字段的函数 batch=

insert into table (column1,column2) values(list[0].value1,list[0].value2),(list[1].value1,list[1].value2)......

字段固定那值必须也固定,有几个字段就必须有几个值,否则会报错

Comment From: heyaping388

那是筛选字段的函数 batch=

sql insert into table (column1,column2) values(list[0].value1,list[0].value2),(list[1].value1,list[1].value2)......

字段固定那值必须也固定,有几个字段就必须有几个值,否则会报错

意思是只能指定固定字段名作为筛选条件,而不能适应所有场景?

Comment From: xbox1994

@heyaping388 我暂时在entity里把字段的默认值直接加上了,可以解决

Comment From: heyaping388

@heyaping388 我暂时在entity里把字段的默认值直接加上了,可以解决

阿里巴巴java开发手册不推荐entity加默认值

Comment From: ldf-hub

所以有解决方案吗?

Comment From: wangjintaod

可以自己写一个方法,在拼sql的时候判断一下 null的时候 colum不拼,value也不拼,我目前是想要让updateTime赋值为now()的,所以我这么写了。同样的道理,拼出来的sql自己调整一下就可以了. 代码图片