【问题标题】:mybaties Type conversion at selectionmybatis 选择时的类型转换
【发布时间】:2018-05-13 10:55:43
【问题描述】:

我在我的项目中使用带有 AWS Oracle RDS 的 mybaties 3.2.6。对于一个表选择,我从表中得到时间戳,但在对象端我有字符串。到目前为止,我一直在使用 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 函数绑定问题,我不想再使用 TO_CHAR 函数。我可以为此在 Java 端/mybaties 端做点什么,比如 CustomTypeHandler 或类似的东西吗?在插入时,我使用带有 java 类型和 Jdbc 类型表示法的 CustomTypeHandler,例如 ...

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

这对于类型转换的插入工作正常......

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

【问题讨论】:

  • 可能的解决方案,将 Java 类型从 String 更改为 propper 类型...
  • :-) :-) :-) 感谢您的建议.....

标签: oracle mybatis amazon-rds spring-mybatis


【解决方案1】:

你在你的类型的结果映射中can specifytypeHandler

如果您的查询不使用结果映射,则需要通过在 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>

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多