项目基本环境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值字段不会出现。

更多相关文章

  1. tp5.1多字段相同查询条件查询
  2. Oralce数据库设计规范V3
  3. PHP提交表单失败后如何保留已经填写的信息
  4. Dynamic Mapping(动态映射)
  5. 公司用的 MySQL 团队开发规范,太详细了,建议收藏!
  6. 人人都想偷的数据库误操作后悔药!
  7. lob字段的direct path read等待导致的性能问题分析过程
  8. 用心整理,1000行MySQL命令,很实用,建议收藏
  9. 大牛干货,MySQL命令1000行整理,收藏学习

随机推荐

  1. webservice1(队列上传 呼叫)
  2. Service Intent must be explicit的解决
  3. Android(安卓)根据一个传入的String选择s
  4. android full screen
  5. Android硬件抽象层学习
  6. Android 相对布局 简单编程
  7. 获取android联系人信息
  8. Android(安卓)Service不被杀死
  9. android attr.xml
  10. Android虚线View