oracle - mybaties 选择时的类型转换
问题描述
我在我的项目中使用带有 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}
这适用于类型转换的插入...
有什么东西可以帮助我在选择时进行类型转换,就像我们在插入时一样?
解决方案
您可以 typeHandler
在结果映射中为您的类型指定。
如果您的查询不使用结果映射,则需要通过指定resultMap
属性来引入它,select
如下所示:
<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>
推荐阅读
- html - 赋予每个权限的 iframe 沙盒属性是否等同于不使用沙盒?
- node.js - 请求 nodejs 中的 Access-Control-Allow-Headers 不允许请求标头字段 access-control-allow-origin
- python - 导入时Python项目结构错误
- git - 在 TeamCity 构建中,尝试将更改推送回 GIT VCS
- python - Flask Login 登录后返回 302 状态码(不重定向到主页)
- postgresql - pgfutter 导入空行
- wordpress - 错误:在服务“webserver”中使用了命名卷“cerbot-etc:/etc/letsencrypt:rw”,但在卷部分未找到声明
- python - 在 Python 3 中执行 while 循环
- swift - 使用 Urlsession 将 Curl 请求转换为 Swift Urlrequest
- mysql - MySQL 选择查询上的 XML 解析和查询