У меня возникла волшебная проблема при обработке запроса oracle db, работающего с mybatis.
Я запрашиваю некоторые столбцы из моей базы данных Oracle и устанавливаю для resultType значение Map, запрос работал нормально, но когда я попытался получить значение из переменной Map и перенести значение в объект String, я получил исключение приведения: «java. sql.Timestamp нельзя привести к java.lang.String ”
Мой код Java Mapper выглядит следующим образом:
@Mapper
public interface DynamicDataMapper {
Map<String, String> selectDataDetail(@Param("traceRuleDO") TraceRuleDO traceRuleDO, @Param("traceQueryVO") TraceQueryVO traceQueryVO);
}
Мои файлы сопоставления Mybatis XML выглядят следующим образом:
<select id="selectDataDetail" resultType="java.util.Map" statementType="STATEMENT" >
<!--select ${traceRuleDO.shownColumns}-->
select *
from ${traceRuleDO.tableName}
where ${traceRuleDO.primaryKey} = ${traceQueryVO.keyValue}
<if test="traceQueryVO.secondaryKeyName != null and traceQueryVO.secondaryKeyName != ''">
and ${traceRuleDO.secondaryKey} = ${traceQueryVO.secondaryKeyValue}
</if>
</select>
Когда я запрашиваю таблицу с этим интерфейсом, запрос сработал. Но когда я попытался получить значение типа «Дата» в базе данных Oracle и попытался установить значение переменной типа String, произошло исключение:
String date = dataMap.get("startDate");//the startDate is of "Date” type in db
Что смутило меня, так это то, что нормально запрашивать и получать результат, но не тогда, когда я получил значение с карты?
Помимо причины этой проблемы, мне также любопытно найти решение для удовлетворения запросов такого типа. Спасибо за вашу помощь!