mybatis 中Oracle 函数 TO_CHAR(deliveryTime,‘yyyy-mm-dd hh24:mi:ss’) 的用法:
public int insertPayDetailInfo(@Param("serialNumber") String serialNumber,@Param("list") List<LongDistancePayOaDetailDto> longDistancePayOaDetailDtos);
<!-- 方法实现 -->
<insert id="insertPayDetailInfo">
INSERT INTO UF_CYHTZFSHLCZJB_DT1 (
LSH,MXBH,DZLX,HTZFLX,FCBH,FCSJ,HTJE,YFJE,SFJE,BZGS,KKLX,CP
)
<foreach collection="list" item="ldpodd" separator="union"
open="select serialNumber,ldPayDetailNumber,documentType,contractPayType,deliveryNumber,TO_CHAR(deliveryTime,'yyyy-mm-dd hh24:mi:ss'),contractAmount,
amountPayble,actualPaidAmount,submitCompany,chargeType,licencePlateNumber from(" close=")">
SELECT
#{serialNumber, jdbcType=VARCHAR} serialNumber,
#{ldpodd.ldPayDetailNumber, jdbcType=VARCHAR} ldPayDetailNumber,
#{ldpodd.documentType, jdbcType=VARCHAR} documentType,
#{ldpodd.contractPayType, jdbcType=VARCHAR} contractPayType,
#{ldpodd.deliveryNumber, jdbcType=VARCHAR} deliveryNumber,
#{ldpodd.deliveryTime, jdbcType=VARCHAR} deliveryTime,
<!-- TO_CHAR( #{ldpodd.deliveryTime},'yyyy-mm-dd hh24:mi:ss') deliveryTime,-->
#{ldpodd.contractAmount, jdbcType=VARCHAR} contractAmount,
#{ldpodd.amountPayble, jdbcType=VARCHAR} amountPayble,
#{ldpodd.actualPaidAmount, jdbcType=VARCHAR} actualPaidAmount,
#{ldpodd.submitCompany, jdbcType=VARCHAR} submitCompany,
#{ldpodd.chargeType, jdbcType=VARCHAR} chargeType,
#{ldpodd.licencePlateNumber, jdbcType=VARCHAR} licencePlateNumber
from dual
</foreach>
</insert>
TO_CHAR( #{createDate, jdbcType=VARCHAR},‘yyyy-mm-dd hh24:mi:ss’) 时间为空不会报错;
TO_CHAR( #{createDate},‘yyyy-mm-dd hh24:mi:ss’) 时间为空报错。
以上代码中 #{ldpodd.deliveryTime, jdbcType=VARCHAR} deliveryTime, 指定了 deliveryTime 的类型,即使为空T O_CHAR(deliveryTime,‘yyyy-mm-dd hh24:mi:ss’) 也不会报错;其实就是 #{} 取值对 null 的处理
---------------------------------------------分割线,2020年8月4日17:16:01------------------------------------