搜索
博主信息
博文 12
粉丝 0
评论 0
访问量 12695
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
mysql新增纪录中某设有默认值的字段为null
兰岚的博客
原创
1180人浏览过

项目基本环境springmvc+mybatis+mysql。

问题出现

mysql中新增一条纪录,status字段值为null,导致按status条件查询给前端时,纪录遗漏。

问题排查

mysql数据库中对字段status,设置了默认值0,没有设置为非null(防止mybaits空值报错)。

mysql默认值没有起作用?

将mapper中新增语句中的status部分去掉,发现默认值出现了。分析并非默认值没起作用,而是insert语句中的null值将mysql中的默认值给覆盖了。

  1. <insert id="add" parameterType="com.tongdatech.sys.domain.OneDay">
  2. insert into t_styd_one_day (
  3. id,fname,price,<!--status-->)values (
  4. #{id,jdbcType=VARCHAR}
  5. ,#{fname,jdbcType=VARCHAR}
  6. ,#{price,jdbcType=NUMERIC}
  7. <!--,#{status,jdbcType=INTEGER}-->
  8. )
  9. </insert>

jsp页面中没有提交status值?

查看jsp页面status为选择框没有””选项,表单提交后端的值应为0或1,为何出现null。(insert语句还原)
表单F12>Network中,新增记录发现status字段提交为空。字段名确认无误,选择“是”提交为空status:,尝试选择“否”提交成功status:1。
分析value值这里不能为0。修改value值为字符后,status能正常提交,正常写入mysql。{‘text’:’是’,’value’:’0’},{‘text’:’否’,’value’:’1’}

  1. <div class="form-group">
  2. <label style="width: 100px;"> 是否上架: </label>
  3. <input type="text" name="status" class="easyui-combobox" data-options="data:[{'text':'是','value':0},{'text':'否','value':1}]" style="width: 200px;"/>
  4. </div>
  5. ......
  6. function saveData() {
  7. $.sys.fmSubmit("#fm", url, undefined, function () {
  8. $("#dlg").dialog("close");
  9. $("#data1").datagrid("reload");
  10. }, "#addBtn");
  11. }

小结

mysql中设置了字段默认值时,insert语句中要注意避免null值覆盖默认值。
页面选择框中选项值””与0,这里提交效果是一样的,均为空,到后端对象收参看到的就是null。
数据库中null与’’的差异:查询时null值字段不会出现。

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学