mysql与mybatis 结合的大坑之列设为 not null

我们在设计表时,总喜欢设计某列有个默认值,然后再设为 not null 

比如表 person 有两个列 

name varchat(20) not null default ''

sex int not null default 1

但这种设计有个大坑,就是在插入的时候,插入的实体属性的值为nul ,那么插入的SQL就是这样的 

insert into person  (name,sex) value ('张三',null);

当这个SQL执行时候,我们以为mysql 会把 null  转换成我们的默认值,但结果是直接报错,因为这条SQL的意思就是要把 null 插入。

那么要怎么样才能把属性值为null的实体插入呢,其实也很简单,就是当发现属性值为null时,我们就在SQL看去掉该属性所对应的列 。

如上面SQL改为如下,则可以成功插入,并且为null 的列会使用设置的默认值

insert into person  (name) value ('张三');

其实这个坑也使用的ORM框架有很大关系,有些会帮处理这种情况,但有些不会,比如 mybaties 就不会帮你处理这种情况。所以当mysql与mybatis结合时,表的设计与SQL写法一定要注意。

 

转载于:https://my.oschina.net/u/2356378/blog/1503201

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值