首页 > 解决方案 > 我的 mybatis 不适用于 Oracle,但在 SQLDeveloper 中测试过

问题描述

我是 Mybatis 的新手,我创建了一个映射器来获取我想要的时间戳。但它只有一段时间有效,但后来它只返回null。对于另一个函数,我使用 SimpleDateFormat 将日期格式化为“dd-MMM-yyyy hh.mm.ss.SSS a”,因此我可以将其插入 Oracle 数据库的时间戳(3)中。下面是我的代码,有什么建议吗?

@Select("SELECT MAX(TIME_STARTED) FROM METADATA_SYNC_LOG WHERE STATUS = 'SUCCESSFUL'")
Date getLastSyncStartedTime();

@Insert("INSERT INTO METADATA_SYNC_LOG (ID, SERVICE, HOST, TIME_STARTED, TIME_FINISHED, STATUS, SYNCRESULT) values (#{ID}, #{SERVICE}, #{HOST}, #{TIME_STARTED}, #{TIME_FINISHED}, #{STATUS}, #{SYNCRESULT})")
void insertIntoMetadata_Sync_log(@Param("ID") String id, @Param("SERVICE") String service, @Param("HOST") String host, @Param("TIME_STARTED") String time_started, @Param("TIME_FINISHED") String time_finished, @Param("STATUS") String status, @Param("SYNCRESULT") String syncresult);

@Update("MERGE INTO SERVICE_METADATA d USING (SELECT #{SERVICE} SERVICE, #{ID} ID, #{SERVICE_ENTITY} SERVICE_ENTITY, #{TIME_CREATED} TIME_CREATED, #{TIME_FINISHED} TIME_FINISHED, #{DETAILS} DETAILS FROM dual) s ON (d.ID = s.ID) WHEN MATCHED THEN UPDATE SET d.SERVICE = s.SERVICE, d.SERVICE_ENTITY = s.SERVICE_ENTITY, d.TIME_CREATED = s.TIME_CREATED, d.TIME_FINISHED = s.TIME_FINISHED, d.DETAILS = s.DETAILS WHEN NOT MATCHED THEN INSERT (SERVICE, ID, SERVICE_ENTITY, TIME_CREATED, TIME_FINISHED, DETAILS) VALUES (s.SERVICE, s.ID, s.SERVICE_ENTITY, s.TIME_CREATED, s.TIME_FINISHED, s.DETAILS)")
void insertOrUpdateIntoService_Metadata(@Param("SERVICE") String service, @Param("ID") String id, @Param("SERVICE_ENTITY") String service_entity, @Param("TIME_CREATED") String time_created, @Param("TIME_FINISHED") String time_finished, @Param("DETAILS") String details);

标签: sqloraclemybatis

解决方案


推荐阅读