芯友网Xin1234.COM

MySQL数据库的问题:字段 sort_num INT(11) DEFAULT 0,当INSERT时,sort_num值为NULL,插入后SELECT发现为NULL,而不是默认值0,这是为什么?而字段设置为主



nossaj.圳深
我?下MySQL数据库的问题:
字段 sort_num INT(11) DEFAULT 0,当INSERT时,sort_num值为NULL,插入后SELECT发现为NULL,而不是默认值0,这是为什么?

而字段设置为主键就不存在这样的问题
武小
设置NOT NULL试试
不允许为空
允许为空的不会自动设置默认值,还是NULL
nossaj.圳深
NOT NULL,插入值为NULL就会报错
武小
报什么错,截图看看呢
nossaj.圳深
插入值为空的错误,因为已经约束NOT NULL
而我传入的值为NULL
武小
插入的时候不写这个字段
nossaj.圳深
嗯 我试试
确实可行
不过还是会有其它的问题产生,因为这个sort_num有时候还是有值的
我再想想其它折中的方法
城空灬舞灵丿.圳深
插入时把他值设为空字符串不就行了

nossaj.圳深
类型是INT类型啊,哪来的空字符串?

MySQL 字段类型是INT类型,对应的Java属性我用的是Integer
壵壵.圳深
这个值为null时替换成默认值0
城空灬舞灵丿.圳深
转下类型不就可以了
或同上
nossaj.圳深
嗯 那就只能判断为null的时候替换值了
当初以为会和设置成主键一样的效果的
城空灬舞灵丿.圳深
你当初是不是想把它设为主键?
nossaj.圳深
怎么可能
城空灬舞灵丿.圳深
你插入时带这个字段了吗?
nossaj.圳深
必须带的呀
城空灬舞灵丿.圳深
带的时候给了什么给它
给了值还是什么都没给?
nossaj.圳深
看前台传的值了,如果没传就为NULL
为NULL或有值
城空灬舞灵丿.圳深
对呀!前台没传,那你又插入,查出的肯定为null了
你sql可以做个判断
nossaj.圳深
sql咋判断?
用的mybatis
城空灬舞灵丿.圳深
没传就设为null插进去,传了就插传的值
nossaj.圳深
本来不就是这样吗?
城空灬舞灵丿.圳深
我大概给你写下吧!手机不好写
州广.圳深
你直接把这一列设置默认值为0   插入的时候如果没给这个字段赋值,就会采用默认值
nossaj.圳深
但愿其详
州广.圳深
理论上是这样的,试试看
nossaj.圳深
?深圳-广州 不是这样,字段INT类型其默认值设置0,如果插入值为NULL,那么插入的值就为NULL,而不是0
州广.圳深
你要插入null?
哥辉.圳深
问下大家 switch case中return true有什么用呢?
nossaj.圳深
因为没传值
州广.圳深
那你得判断  sort_num这列有没有值,没有值 就insert的时候  不加sort_num这列
这样就会使用默认值了
nossaj.圳深
那就多了很多步骤了,我用的mybatis
州广.圳深
mybatis也可以用if条件
nossaj.圳深
这样呀,我百度下
城空灬舞灵丿.圳深
说了呀,sql判断下就好了
nossaj.圳深
我不知道mybatis可以写if语句
城空灬舞灵丿.圳深
判断那个传入的字段就可以
武小
尽量不要用mysql的默认值,在java里面处理好再insert
nossaj.圳深
为啥子?
武小
业务逻辑不要跟数据库扯到一起了
哥辉.圳深
我来解释我上面那个问题,就是结束方法的意思
nossaj.圳深

https://zhidao.baidu.com/question/489402586814717972.html
那mybatis的if else判断,最后它底层使用的sql,还是java代码?
武小
。。java里面用NumberUtils.toInt转一下就搞定了,哪用这么复杂
nossaj.圳深
那我直接一开始用int不更好?int 默认值为0
java中
那么问题来了,ALL.整数对应的java类型一般用int,还是Integer?
念離——圳深
【官方】略懂社网站正式上线啦!

相关问题
------分隔线----------------------------
赞助商链接
赞助商链接
推荐内容