龙空技术网

mybatis plus + mysql default值不生效的问题

德才兼备清风Q 1909

前言:

眼前咱们对“mysql修改字段默认值为0”大致比较关切,我们都想要分析一些“mysql修改字段默认值为0”的相关知识。那么小编同时在网络上收集了一些关于“mysql修改字段默认值为0””的相关文章,希望小伙伴们能喜欢,看官们一起来学习一下吧!

使用mybatis plus测试插入数据,发现mysql中t_user表的active字段默认值没有生效,但是create_time和update_time字段默认值生效了。

实体类代码:

实体类代码

测试类代码:

测试类代码

表结构:

t_user表active默认值是1

插入时根据系统时间填充

更新和插入时根据系统时间填充

测试后数据库中的数据:

插入后active值为0

为了看清楚运行了什么sql,配置了mybatis plus的日志输出位控制台输出:

配置mybatis plus日志输出

插入的sql语句中有active字段,没有create_time和update_time字段,

sql语句

mysql如果要使用default值,那么insert语句中就不能有这个字段,如有这个字段,则default值失效。为了让insert语句不带active字段,使用TableField注解的insertStrategy,让insert的时候不加入sql,而createTime和updateTime因为数据库插入和更新操作都设置好了,所以不需要再出现在插入和更新的sql中,配置了insertStrategy和updateStrategy全是NEVER。FieldStrategy是一个枚举类:

FieldStrategy

修改实体类如下:

添加TableField注解

再次测试,没有了active字段:

sql中没有了active字段

查看数据库数据,active使用了数据库的默认值:

active使用了mysql设置的默认值1

标签: #mysql修改字段默认值为0 #mysql修改字段默认值为0不生效 #mysql时间字段默认值问题有哪些 #mysql更新语句不生效