问题背景:
本项目属于SSH项目,持久层关系数据库框架是Hibernate。前台通过序列化表单,将全部参数和参数值传到后台。
预期效果:
将数据库表里某些Number类型的字段设置初始值为0.0,如果前台表单没有填充这些字段,待执行添加操作后,这些Number类的字段的值为默认值0.0
实际效果;
执行添加操作后,Number类型的字段的值为空,并非0.0
解决问题:
数据库默认属性无效的问题
解决方式:
在映射文件*.hbm.xml的<class name=.....dynamic-insert="true">
解决原理:
dynamic-insert="true,动态生成SQL语句才执行,如果属性值为空则动态的sql语句中将不再出现空值字段,保证sql的执行效率。
扩展:
dynamic-update="true",也是动态生成sql语句,只有你修改的属性,才会出现在sql语句中。
适应范围:
数据库表字段很多的情况使用有助于提交sql语句运行效率。