Mybatis查询时间字段显示为null的处理方案

环境

SpringBoot 1.5 + JDK1.8 + Mybatis3.4sql

现象

使用Mybatis动态SQL查询数据后发现,时间字段显示为null,这不单单是时间格式问题。post

解决与总结

跟踪代码以后发现xml文件中测试

映射关系url

<resultMap id="PcmArticleListDTO" type="com.xxx.xxx.model.PcmArticleListDTO">
    <!--
      WARNING - @mbg.generated
    -->
    <id column="CT_ID" jdbcType="VARCHAR" property="ctId" />
    <result column="TITLE" jdbcType="VARCHAR" property="title" />
    <result column="SUBTITLE" jdbcType="VARCHAR" property="subtitle" />
    <result column="CON" jdbcType="VARCHAR" property="con" />
    <result column="CON_H5" jdbcType="VARCHAR" property="conH5" />
    <result column="ABSTRACT" jdbcType="VARCHAR" property="abstracts" />
    <result column="AUTHOR" jdbcType="VARCHAR" property="author" />
    <result column="CT_TIME" jdbcType="TIMESTAMP" property="ctTime" />
    <result column="KW" jdbcType="VARCHAR" property="kw" />
    <result column="IS_AUTODIS" jdbcType="CHAR" property="isAutodis" />
    <result column="DIS_TIME" jdbcType="TIMESTAMP" property="disTime" />
    <result column="AU_STATE" jdbcType="CHAR" property="auState" />
    <result column="PUB_STATE" jdbcType="CHAR" property="pubState" />
    <result column="DEL_TAG" jdbcType="VARCHAR" property="delTag" />
    <result column="CRT_OPT" jdbcType="VARCHAR" property="crtOpt" />
    <result column="CRT_TIME" jdbcType="TIMESTAMP" property="crtTime" />
    <result column="UPD_OPT" jdbcType="VARCHAR" property="updOpt" />
    <result column="UPD_TIME" jdbcType="TIMESTAMP" property="updTime" />
    <result column="PUB_OPT" jdbcType="VARCHAR" property="pubOpt" />
    <result column="PUB_TIME" jdbcType="TIMESTAMP" property="pubTime" />
    <result column="LIKE_NUM" jdbcType="DECIMAL" property="likeNum" />
    <result column="READ_NUM" jdbcType="DECIMAL" property="readNum" />
    <result column="COVER_PATH" jdbcType="VARCHAR" property="coverPath" />
    <result column="CONTENT_TYP" jdbcType="CHAR" property="contentTyp" />
    <result column="URL" jdbcType="VARCHAR" property="url" />
    <result column="IS_TIMEING" jdbcType="CHAR" property="isTimeing" />
    <result column="TIMEING_DATE" jdbcType="TIMESTAMP" property="timeingDate" />
    <result column="REMARK" jdbcType="VARCHAR" property="remark" />
  </resultMap>

动态SQLcode

<sql id="selectArticleByIdField">${alias}.CT_ID,${alias}.TITLE,${alias}.SUBTITLE,${alias}.CON,${alias}.CON_H5,${alias}.ABSTRACT,${alias}.AUTHOR,${alias}.KW,${alias}.IS_AUTODIS,${alias}.AU_STATE,${alias}.PUB_STATE,${alias}.LIKE_NUM,${alias}.READ_NUM,${alias}.COVER_PATH,${alias}.CONTENT_TYP,${alias}.URL,${alias}.IS_TIMEING,${alias}.REMARK </sql>
  <select id="selectArticleById" resultType="com.bjbde.trade.model.PcmArticleListDTO">
    select
    <include refid="selectArticleByIdField"><property name="alias" value="t1"></property></include>
    from PCM_ARTICLE t1
    where t1.PUB_STATE = '1'
    and t1.DEL_TAG = '0'
    and t1.CT_ID = #{ctId}

SQL中select后面的域中没有时间相应的字段,故予以添加,添加后显示效果orm

"ctTime": 1551024000000,

这个是因为时间格式未做处理的结果xml

解决方案

找到相应的POJO在对应时间属性上加注解接口

@JSONField(format = "yyyy-MM-dd HH:mm")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")

总体效果rem

@JSONField(format = "yyyy-MM-dd HH:mm")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
private Date ctTime;

加上以后,postman从新测试接口,时间格式显示正确。it

相关文章
相关标签/搜索