mysql與mybatis 結合的大坑之列設爲 not null

咱們在設計表時,總喜歡設計某列有個默認值,而後再設爲 not null mysql

好比表 person 有兩個列 sql

name varchat(20) not null default ''mybatis

sex int not null default 1框架

但這種設計有個大坑,就是在插入的時候,插入的實體屬性的值爲nul ,那麼插入的SQL就是這樣的 設計

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

當這個SQL執行時候,咱們覺得mysql 會把 null  轉換成咱們的默認值,但結果是直接報錯,由於這條SQL的意思就是要把 null 插入。arc

那麼要怎麼樣才能把屬性值爲null的實體插入呢,其實也很簡單,就是當發現屬性值爲null時,咱們就在SQL看去掉該屬性所對應的列 。

如上面SQL改成以下,則能夠成功插入,而且爲null 的列會使用設置的默認值

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

其實這個坑也使用的ORM框架有很大關係,有些會幫處理這種狀況,但有些不會,好比 mybaties 就不會幫你處理這種狀況。因此當mysql與mybatis結合時,表的設計與SQL寫法必定要注意。

相關文章
相關標籤/搜索