Blogger Information
Blog 12
fans 0
comment 0
visits 10132
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
mysql新增纪录中某设有默认值的字段为null
兰岚的博客
Original
908 people have browsed it

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

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post