记录一次日期类型字段的非空插入

1.情景展示

在实际开发过程中,经常会要与时间打交道。

有时候,日期类型字段在插入时间的时候需要非空。

如何进行妥善处理?

以oracle数据库进行举例说明。

2.具体分析

对日期类型的非空处理,有三种解决方式。

3.解决方案

方式一:为字段添加默认时间

第一步:为该字段添加默认系统时间;

第二步:将该字段设为非空(必须设置成为非空,否则默认值不生效)。

<insert id="insertWJ_CONSULT_INFO" parameterClass="map">
    INSERT INTO WJ_CONSULT_INFO(ORG_CODE,ORG_NAME,PATIENT_TYPE,PATIENT_ID,TDEPTCODE,TDEPTNAME,DOCTORCODE,DOCTORNAME,DOCTORPHONE,CONSULT_DATE, APPLY_DATE)
    VALUES(#ORG_CODE#,#ORG_NAME#,#PATIENT_TYPE#,#PATIENT_ID#,#TDEPTCODE#,#TDEPTNAME#,#DOCTORCODE#,#DOCTORNAME#,#DOCTORPHONE#,TO_DATE(#CONSULT_DATE#,'YYYY-MM-DD HH24:mi'), TO_DATE(#APPLY_DATE#, 'yyyy-MM-dd hh24:mi:ss'));
</insert>

注意:

必须将时间字段设置成非空状态。

因为,在java当中,此字段传参值为NULL,所以SQL在执行的时候,该值插入的就是NULL。

由于我们将字段设为了:可为空值,所以,Oracle最终并不会触发插入默认值的操作!!!

方式二:在java当中填值;

String APPLY_DATE = WebUtils.getParameter("APPLY_DATE");
if(null == APPLY_DATE || "".equals(APPLY_DATE) || "null".equals(APPLY_DATE)) {
	APPLY_DATE = DateUtils.getSysdateStr("yyyy-MM-dd HH:mm:ss");
}
params.put("APPLY_DATE", APPLY_DATE);

方式三:在XML当中填值。

以ibatis为例

<insert id="insertWJ_CONSULT_INFO" parameterClass="map">
	DECLARE V_APPLY_DATE DATE := TO_DATE(#APPLY_DATE#, 'yyyy-MM-dd hh24:mi:ss');
	BEGIN
		IF (V_APPLY_DATE IS NULL) THEN
			V_APPLY_DATE := SYSDATE;
		END IF;
		
		INSERT INTO WJ_CONSULT_INFO(ORG_CODE,ORG_NAME,PATIENT_TYPE,PATIENT_ID,TDEPTCODE,TDEPTNAME,DOCTORCODE,DOCTORNAME,DOCTORPHONE,CONSULT_DATE, APPLY_DATE)
		VALUES(#ORG_CODE#,#ORG_NAME#,#PATIENT_TYPE#,#PATIENT_ID#,#TDEPTCODE#,#TDEPTNAME#,#DOCTORCODE#,#DOCTORNAME#,#DOCTORPHONE#,TO_DATE(#CONSULT_DATE#,'YYYY-MM-DD HH24:mi'), V_APPLY_DATE);
	END;
</insert>

说明:

在ibatis当中,无论是在<insert></insert><update></update><delete></delete>当中,我们除了可以进行上述对应的操作之外,还可以进行其它操作。

只不过是为了规范,需要在不同的标签执行增、删、改。

通过xml的方式将要执行的各种statement(statement、preparedStatemnt)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由ibatis框架执行sql并将结果映射成java对象并返回。

具体执行了什么,它并不管。

4.拓展

需要说明一点:

日期类型,虽然我们在插入SQL时,进行TO_DATE()进行日期类型转换时,如果在java当中,此字段内容为空,最终插入到表中时,该条数据,此字段的值也将为空,即:null。

不用担心时候否会报错的问题。

对于其它数据类型也一样,在insert的时候,只要不是非空字段,在声明插入,但却没值时,插入的内容都将为null或者空''。

-- Parameters: [null, 505823, 卫生院, 1, 5, , , , , , 2023-08-22 14:35, 505137, 人民医院, 1, , null, null, null, null, 0, null, null, null, null, null, null, 51692687088795, 61065825]

  

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2023-08-22 17:16  Marydon  阅读(47)  评论(0编辑  收藏  举报