Мне нужно получить список столбцов в таблице, используя mybatis/ibatis в java 1.5.Как получить метаданные столбца в mybatis
ответ
Это не типичное требование (99,99% приложений, использующих iBatis или что-то другое, что ORM знает схему БД). iBatis - это калькулятор SQL, вы должны сами написать SQL-запрос. И нет стандартного SQL-запроса (AFAIK), который дает вам количество столбцов в таблице.
Я могу только предложить два подхода:
Сделать SQL запрос выбирающий из таблиц каталога. Это нормальный способ узнать о ваших метаданных базы данных. Но это зависит от вашего конкретного механизма базы данных. И это не связано с iBatis.
Быстрый и грязный: сделайте запрос ad-hoc
SELECT * FROM MYTABLE LIMIT 1
(замените LIMIT для вашего DB-аналога), нарисуйте его в iBatis через HashMap, а в вашем DAO просто подсчитайте количество ключей.
Для Mybatis: Вам нужно использовать resultType вместо resultmap. resultType должен возвращать тип данных коллекции, зная размер коллекции, которую вы не можете получить. столбцов и более, если вы собираетесь с HashMap, вы также можете получить имена столбцов в ключах.
Существует случай наличия нескольких тесно связанных таблиц, в которых говорят, что таблицы разделяют 5 столбцов, но имеют дополнительный столбец, который зависит от конкретной таблицы. Похоже на ситуацию принудительного наследования в вашей БД. Не приятно работать, но я видел это в нескольких случаях. Для этого я очень согласен с подходом № 2. Довольно мощный подход. Я просто хочу уточнить, что вам нужна коллекция HashMaps, потому что каждый HashMap представляет собой один столбец. – demongolem