2016-12-16 5 views
1

Я использую PostgreSQL. Один из моих полей таблицы является массивом:Как преобразовать целое число [] в Список <Integer> непосредственно при сопоставлении с объектом JAVA в myBatis

"day_of_month" int[] DEFAULT NULL 

Но мой объект домена для этой таблицы List<Integer>. Я хочу получить значение атрибута в атрибуте в POJO с типом :List<Integer> с использованием API запросов MyBAtis.

Есть ли какой-либо автоматический способ для этого, есть ли что-либо, предоставляемое Postgresql, чтобы напрямую преобразовать его в List<Integer>, хотел избежать дополнительной обработки?

ответ

1

Вы должны использовать пользовательский TypeHandler, an example here.

Вы специально заинтересованы в GetResult метод, statement.getArray(i).getArray() возвращает Object []. Просто поместите его в список (или что угодно): Arrays.asList() и верните его. Кстати, не забудьте проверить нуль, чтобы избежать NPE.

Конечно, ссылаться на него в вашем resultMap с атрибутом typeHandler="type.handler.full.qualified.name"

+0

да ... это один из вариантов ... но я хотел что-то в самом PostGreSQL запросе. – JuilyT

+0

да, это то, что вы просили. Но мне интересно, в чем цель? Вы, похоже, используете синтаксис типа «cast», но он может работать только для ввода. Вы хотите, чтобы Postgres «знали», что такое Java-список, но зачем ему это нужно? Драйвер jdbc предоставляет результатSet для получения результатов как «простых» типов Java. Mybatis - это еще один слой поверх этого, чтобы сопоставить более сложные структуры, такие как List. – blackwizard

 Смежные вопросы

  • Нет связанных вопросов^_^