首页 文章

mybaties选择时的类型转换

提问于
浏览
0

我在我的项目中使用mybaties 3.2.6和AWS Oracle RDS . 对于一个表选择,从表中我得到TimeStamp但在对象端我有String . 到目前为止,我使用TO_CHAR将timeStamp(JDBC端)转换为String(Java端),就像这样 .

SELECT SESSION_ID,
      ct.MEMBER_ID as MEMBER_ID  ,
      ct.KO_MEMBER_ID as KO_MEMBER_ID, 
      ct.KO_MEMBER_NAME as KO_MEMBER_NAME, 
      ct.REASON as REASON, 
      TO_CHAR(ct.TICKET_DTM,'YYYY-MM-DD HH24:MI:SS.FF') as TICKET_DTM, 
      ct.DATA_TYPE as DATA_TYPE  
      FROM TICKET ct
      WHERE id=#{Id}
      fetch first 300 rows only

但是为了避免DB Function绑定问题,我不想再使用TO_CHAR函数了 . 我可以在Java end / mybaties结束时做些什么,比如CustomTypeHandler或类似的东西?在插入时我使用CustomTypeHandler与java类型和Jdbc类型表示法,如...

#{birthday,jdbcType=DATE,javaType=java.lang.String,typeHandler=StringDateTypeHandler}

这适用于插入类型转换......

有没有什么东西可以帮助我在选择时进行类型转换,就像我们有插入一样?

1 回答

  • 0

    您在类型的结果 Map 中can specify typeHandler .

    如果您不为查询使用结果映射,则需要通过在 select 中指定 resultMap 属性来引入它,如下所示:

    <select id="getTickets" resultMap="ticketResultMap">
        ... you query goes here
     </select>
    

    还要像这样添加 resultMap 定义:

    <resultMap id="ticketResultMap" type="Ticket">
        <id property="id" column="id"/>
        <result property="yourDateColumn" column="TICKET_DTM" 
            typeHandler="StringDateTypeHandler"/>
        <!-- other fields mappings or use autoMapping="true" -->
    </resultMap>
    

相关问题