2010-09-24 7 views

ответ

2

Это не типичное требование (99,99% приложений, использующих iBatis или что-то другое, что ORM знает схему БД). iBatis - это калькулятор SQL, вы должны сами написать SQL-запрос. И нет стандартного SQL-запроса (AFAIK), который дает вам количество столбцов в таблице.

Я могу только предложить два подхода:

  1. Сделать SQL запрос выбирающий из таблиц каталога. Это нормальный способ узнать о ваших метаданных базы данных. Но это зависит от вашего конкретного механизма базы данных. И это не связано с iBatis.

  2. Быстрый и грязный: сделайте запрос ad-hoc SELECT * FROM MYTABLE LIMIT 1 (замените LIMIT для вашего DB-аналога), нарисуйте его в iBatis через HashMap, а в вашем DAO просто подсчитайте количество ключей.

+0

Существует случай наличия нескольких тесно связанных таблиц, в которых говорят, что таблицы разделяют 5 столбцов, но имеют дополнительный столбец, который зависит от конкретной таблицы. Похоже на ситуацию принудительного наследования в вашей БД. Не приятно работать, но я видел это в нескольких случаях. Для этого я очень согласен с подходом № 2. Довольно мощный подход. Я просто хочу уточнить, что вам нужна коллекция HashMaps, потому что каждый HashMap представляет собой один столбец. – demongolem

0

Для Mybatis: Вам нужно использовать resultType вместо resultmap. resultType должен возвращать тип данных коллекции, зная размер коллекции, которую вы не можете получить. столбцов и более, если вы собираетесь с HashMap, вы также можете получить имена столбцов в ключах.