记录一次日期类型字段的非空插入 202565编辑
Heaven helps those who help themselves
资深码农+深耕理财=财富自由
欢迎关注
资深码农+深耕理财=财富自由
欢迎关注

记录一次日期类型字段的非空插入
Created by Marydon on 2023-08-22 17:16
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]
与君共勉:最实用的自律是攒钱,最养眼的自律是健身,最健康的自律是早睡,最改变气质的自律是看书,最好的自律是经济独立 。
您的一个点赞,一句留言,一次打赏,就是博主创作的动力源泉!
↓↓↓↓↓↓写的不错,对你有帮助?赏博主一口饭吧↓↓↓↓↓↓
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/17649115.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端