一、localtimestamp - 时间格式字段处理
// sql created_time timestamp(0) default LOCALTIMESTAMP not null // java localtimestamp
default LOCALTIMESTAMP,可以设置默认时间是插入数据的时间
我最初设置了上述这样,然后这样插入值:
<insert id="insert" parameterType="Market"> insert into cs_market_service(id, ... created_by, created_time ...) values (nextval('seq_cs_common'), ... #{createdBy}, #{createdTime}, ...) <selectKey order="AFTER" keyProperty="id" resultType="Integer"> SELECT currval('seq_cs_common') </selectKey> </insert>
然后一直报错:createdTime不允许为null,但是传入了 null 值,因为我这个 java 里没有传这个值。有2种方式可以解决。
1、localtimestamp —— 将上面的 #{createdTime} 改为 下面的localtimestamp即可
<insert id="insert" parameterType="Market"> insert into cs_market_service(id, ... created_by, created_time ...) values (nextval('seq_cs_common'), ... #{createdBy}, localtimestamp, ...) <selectKey order="AFTER" keyProperty="id" resultType="Integer"> SELECT currval('seq_cs_common') </selectKey> </insert>
2、第2种方案:取消数据库的 not null 限制
利用数据库的 default LOCALTIMESTAMP,可以设置默认时间是插入数据的时间。
然后将上面的 created_time 的设置删掉即可,让数据库去默认填值就行了。推荐这种方式。