系列文章目录
前言
前面的主键生成策略改回native
一、hibernate的动态插入、动态更新
model的数据类型尽量不要设为int设置成integer
实体类的属性的数据类型问题(model的数据类型尽量不要设为int)
(一)定义实体类时,如果属性的类型定义成int类型,在前台jsp页面数据呈现时,会默认显示为0.而Integer不会显示0.Integer是包装类,包装类符合对象的特征并提供了一些必要的属性和方法。
(二)如果返回字段值为null,int类型会报错,Integer不会报错。因为int类型声明的是变量,而null是对象所以会报错。
(三)int类型的默认值为0,Integer类型的默认值为null
hibernate的动态插入
严格来说,这样空的字段不会插入到数据库里面去了
动态更新
跟动态插入同理,动态更新也是一样的
class标签的dynamic-update=“true” 与insert类似
启用了动态插入后,如果插入的数据跟数据库原来的数据是一模一样的话,是不会执行更新的,因为没有意义
所以动态插入的意思就是,没有必要的就没必要写在sql里面,有必要的再写
type的使用
Date:
1.在property中type不写,数据库对应的类型 datetime【年月日时分秒】
2.type中data,数据库对应的类型 date【只有年月日】
3.type中time,数据库对应的类型 time【只有时分秒】
4.type中timestamp,数据库对应的类型 timestamp【时间戳】-感觉不太好用
如果要用时间戳,建议用long类型
总结
1、
(一)定义实体类时,如果属性的类型定义成int类型,在前台jsp页面数据呈现时,会默认显示为0.而Integer不会显示0.Integer是包装类,包装类符合对象的特征并提供了一些必要的属性和方法。
(二)如果返回字段值为null,int类型会报错,Integer不会报错。因为int类型声明的是变量,而null是对象所以会报错。
(三)int类型的默认值为0,Integer类型的默认值为null
2、
class标签的dynamic-insert=“true” 是否动态生成插入语句,,【如果属性字段为空,就不会有些字段的插入语句】
3、type用来设置数据类型以及长度