在数据表里给字段设置了默认值为0,但是在插入的时候不生效,数据表设计如下

通过数据表生成的实体类

查看代码
@Data
@TableName(value = "user")
@NoArgsConstructor
@AllArgsConstructor
public class UserEntity{ @TableId
@ApiModelProperty("Id")
private Integer id; @ApiModelProperty("用户名")
private String username; @ApiModelProperty("密码")
private String password; @ApiModelProperty("性别")
private Integer gender; @ApiModelProperty("创建时间")
private LocalDateTime createTime; private Integer deleted;
}

使用mybatis-plus将数据插入到数据库中

查看代码
UserEntity userEntity = new UserEntity();
userEntity.setId(5);
userEntity.setGender(0);
userEntity.setUsername("username");
userEntity.setPassword("123214"); LocalDateTime dateTime = LocalDateTime.now();
userEntity.setCreateTime(dateTime); userService.save(userEntity);

使用mybatis-plus的方法进行插入后,发现deleted的值是NULL,而不是已经设置好的默认值0

通过日志查看mybatis-plus的插入SQL语句,发现SQL语句会将deleted赋值为NULL,所以数据库的默认值就不生效了

查看了mybatis-plus的官方文档,发现是不小心改了配置文件,导致生成的SQL语句会将NULL值插入到数据库中

原因:mybatis-plus的插入策略写成了ignored,在生成SQL语句时,就不会判断插入数据库的值是否为NULL

解决:将这段配置删掉,按照mybatis-plus默认的配置,会进行判断是否为NULL,就可以屏蔽NULL值,不会插入到数据库,数据表设置的默认值就生效了

Java:数据表的字段设计了默认值0不生效的原因的更多相关文章

  1. SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int

    --SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...

  2. MySQL 给已存在的数据表 增加字段和注释

    MySQL 给已存在的数据表 增加字段和注释 问题描述 在开发一个系统的过程中,经常会遇到随着系统服务功能的扩展,或者服务之间的关联,需要适当的修改原有的表结构,比如,增加一些必要的字段. 示例:在已 ...

  3. 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本

    解决问题:字段类型为char的总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar. 操作说明:打开SQL Se ...

  4. 【SQL Server】sql server更改了数据表的字段/新增数据表的字段 无法保存

    sql server更改了数据表的字段/新增数据表的字段  无法保存 解决方法:进入 工具-->选项-->Designers-->表设计器和数据库设计器-->取消勾选   即可

  5. Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?

    NET[C#]Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射? 问题描述 比如有如下的数据表结构:Person: person_id int first_name va ...

  6. m_Orchestrate learning system---十四、数据表中字段命名规则

    m_Orchestrate learning system---十四.数据表中字段命名规则 一.总结 一句话总结:a.保证唯一 b.见名知意 1.注意php中的数组类函数和字符串类函数的前缀? 数组类 ...

  7. MySQL中大数据表增加字段,增加索引实现

    MySQL中大数据表增加字段,通过增加索引实现 普通的添加字段sql ALTER TABLE `table_name` ADD COLUMN `num` int(10) NOT NULL DEFAUL ...

  8. 齐博x1 万能fun 调用任意数据表 任意字段就是这么任性调用

    列举了几个常用的查询进行简单封装,虽然系统也有内置的但是很多人不大会就二次封装简化了一下. 这里只封装了一个条件 多个条件的自己再封装或者用标签解决比较好 这里只是说fun可以万能调用 1获取任意表的 ...

  9. 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?

    在高并发.高负载的情况下,如何给表添加字段并设置DEFAULT值? 在Oracle 12c之前,当Oracle表数据量上亿时,对表执行“ALTER TABLE XXX ADD COLUMN_XX VA ...

  10. Spring boot Jpa添加对象字段使用数据库默认值

    Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...

随机推荐

  1. ORA-01427: 单行子查询返回多个行 出现原因及对应防止措施

    原因:没有做好子查询约束条件 解决方法:1.加 AND ROWNUM =1 条件 但筛选结果可能并非一定是你想要的 2.匹配查询唯一约束条件

  2. 在 Linux 上微调 Nginx 获得最佳性能的 8 种方法

    转载来自:Linux迷链接:https://www.linuxmi.com/linux-nginx-performance.html NGINX 是一种流行的.免费的开源 Web 服务器.默认的 NG ...

  3. 解决linux时间转换为yyyy-MM-dd

    linux时间显示为:Tue Nov 30 09:33:04 CST 2021 SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd ...

  4. bert一些思考

    bert结构 首先是embdding lookup,[batch * seq]-->[batch, seq, hidden] 然后是加个mask embdding和type embdding和p ...

  5. java初学者-手动输入一个整数,打印这个数是几位数

    import.java.until.Scanner; //手动输入一个整数,打印这个数是几位数 public static void main(String[]args){ //键盘录入 Scanne ...

  6. Markdown基础使用学习

    Mark Down学习 标题:#+标题名字 二级标题:## +标题名字 三级... 字体 两个*+字+两个=加粗 一个=斜体 引用 一个大于号+内容 图片 ![图片名字](路径) 符号全部小写 超链接 ...

  7. obs问题记录

    1.安装obs后,可能无法使用,需要下载dll文件,我的阿里云盘中有: 2.录制时电脑没电会报错'编码器错误': 3.插上声卡后播放视频想听到声音需要在声卡上插耳机听: 4.

  8. Activity基础知识

    Activity 一.Activity是什么 Activity是一种可以包含用户界面的组件,主要用于和用户进行交互.一个应用程序可以包含零个或多个活动. 二.活动的基本用法 1. 手动创建活动 ​ 打 ...

  9. js两个数组对象合并去重

  10. 2html5

    多媒体标签 <audio> <audio src='../audio/bxb.mp3' controls="controls" autoplay="au ...