Java:数据表的字段设计了默认值0不生效的原因
在数据表里给字段设置了默认值为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不生效的原因的更多相关文章
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
		
--SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...
 - MySQL 给已存在的数据表 增加字段和注释
		
MySQL 给已存在的数据表 增加字段和注释 问题描述 在开发一个系统的过程中,经常会遇到随着系统服务功能的扩展,或者服务之间的关联,需要适当的修改原有的表结构,比如,增加一些必要的字段. 示例:在已 ...
 - 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
		
解决问题:字段类型为char的总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar. 操作说明:打开SQL Se ...
 - 【SQL Server】sql server更改了数据表的字段/新增数据表的字段  无法保存
		
sql server更改了数据表的字段/新增数据表的字段 无法保存 解决方法:进入 工具-->选项-->Designers-->表设计器和数据库设计器-->取消勾选 即可
 - Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射?
		
NET[C#]Dapper中数据表的字段(列)与实体属性不一致时,如何手动配置它们之间的映射? 问题描述 比如有如下的数据表结构:Person: person_id int first_name va ...
 - m_Orchestrate learning system---十四、数据表中字段命名规则
		
m_Orchestrate learning system---十四.数据表中字段命名规则 一.总结 一句话总结:a.保证唯一 b.见名知意 1.注意php中的数组类函数和字符串类函数的前缀? 数组类 ...
 - MySQL中大数据表增加字段,增加索引实现
		
MySQL中大数据表增加字段,通过增加索引实现 普通的添加字段sql ALTER TABLE `table_name` ADD COLUMN `num` int(10) NOT NULL DEFAUL ...
 - 齐博x1 万能fun 调用任意数据表 任意字段就是这么任性调用
		
列举了几个常用的查询进行简单封装,虽然系统也有内置的但是很多人不大会就二次封装简化了一下. 这里只封装了一个条件 多个条件的自己再封装或者用标签解决比较好 这里只是说fun可以万能调用 1获取任意表的 ...
 - 在高并发、高负载的情况下,如何给表添加字段并设置DEFAULT值?
		
在高并发.高负载的情况下,如何给表添加字段并设置DEFAULT值? 在Oracle 12c之前,当Oracle表数据量上亿时,对表执行“ALTER TABLE XXX ADD COLUMN_XX VA ...
 - Spring boot Jpa添加对象字段使用数据库默认值
		
Spring boot Jpa添加对象字段使用数据库默认值 jpa做持久层框架,项目中数据库字段有默认值和非空约束,这样在保存对象是必须保存一个完整的对象,但在开发中我们往往只是先保存部分特殊的字段其 ...
 
随机推荐
- 第三章:用python实现常用的用户分层模型(RFM模型)
			
文章目录 项目背景 读取数据 数据分析 分析 Recent 分析 Frequency 分析 Mount RFM模型 分位数分层 自定义分层 定义客户标签 数据可视化 结论 源码地址 本文可以学习到以下 ...
 - libevent学习之入门--[02]从hello-world开始
			
系列文章回顾 libevent学习之入门--[01]概述与安装 上一节介绍了libevent的下载和编译,从这节开始,我会从我学习的角度逐步探索libevent的源码,慢慢揭开它的神秘面纱. 面对几十 ...
 - MBR与GPT[转]
			
MBR分区 MBR的意思是"主引导记录",是IBM公司早年间提出的.它是存在于磁盘驱动器开始部分的一个特殊的启动扇区. 这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动 ...
 - spring-security-oauth2-authorization-server
			
旧依赖的移除 长久以来,使用Spring Security整合oauth2,都是使用Spring Security Oauth2这个系列的包: <dependency> <group ...
 - Vscode,php运行
			
1.下载好vscode,点击左侧扩展,然后搜索php,安装插件 2.打开小皮面板创建网站 点击确认 创建成功 3.浏览器输入http://myblog验证 4.在vscode打开新建的myblog文件 ...
 - wampserver APACHE配置文件 和    单独安装APACHE 的配置文件 的区别
			
wampserver APACHE配置文件: 单独安装APACHE 的配置文件
 - Linux deploy 32位系统 怎么安装宝塔怎么安装linux系统安装宝塔后搭建网站
			
getconf LONG_BIT 获取当前linux系统位数
 - 方法(Java)
			
什么是方法? 基本介绍 在其他语言中也叫函数 System.out.println();类名.对象.方法: Java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序集合 方法包 ...
 - mitudesk的pytorch基础
			
pytorch定义张量的方法和Numpy差不多 2. 标量才能对张量求导,代表其在各个方向上的偏导数,结果是一个张量 3. 在pyt中张量可以对张量求导,前提条件是求导时传一个1,1,1,1,进去,其 ...
 - [CQOI2014]通配符匹配 题解
			
第一眼:什么鬼东西ヾ(。`Д´。) 第二眼:显然,这道题要分段处理 类似[TJOI2018]碱基序列\ (建议做一做也是Hash+DP)\ 那你怎么第一眼没看出来 Hash处理+DP==AC 直接上代 ...