1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/selfly-sonsure-dumper

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
mapping-handler.md 5.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:43 e04b5c0

Использование и расширение MappingHandler

Назначение MappingHandler — обеспечивать взаимное преобразование между именами классов, атрибутов и таблицами, столбцами.

Интерфейс определяется следующим образом:

public interface MappingHandler {

    /**
     * Получение имени таблицы по имени класса
     *
     * @param className имя класса
     * @param params параметры
     * @return имя таблицы
     */
    String getTable(String className, Map<String, Object> params);

    /**
    * Получение имени таблицы по классу
    *
    * @param clazz класс
    * @param params параметры
    * @return имя таблицы
    */
    String getTable(Class<?> clazz, Map<String, Object> params);

    /**
    * Получение имени первичного ключа по классу
    *
    * @param clazz класс
    * @return имя первичного ключа
    */
    String getPkField(Class<?> clazz);

    /**
    * Получение имени столбца по имени класса и имени атрибута
    *
    * @param clazzName имя класса
    * @param fieldName имя атрибута
    * @return имя столбца
    */
    String getColumn(String clazzName, String fieldName);

    /**
    * Получение имени столбца по классу и имени атрибута
    *
    * @param clazz класс
    * @param fieldName имя атрибута
    * @return имя столбца
    */
    String getColumn(Class<?> clazz, String fieldName);

    /**
    * Получение атрибута по классу и имени столбца
    *
    * @param clazz
    * @param columnName
    * @return
    */
    String getField(Class<?> clazz, String columnName);
}

По умолчанию предоставляется реализация DefaultMappingHandler, которая наследуется от AbstractMappingHandler и следует ранее упомянутым соглашениям (usage.md).

Также предоставляются несколько часто используемых параметров для настройки:

modelPackages

Пакет, в котором находятся классы сущностей. Формат аналогичен формату пакетов при сканировании Spring, поддерживается использование подстановочных знаков, несколько пакетов разделяются запятой.

Этот параметр необходимо указать при использовании коротких имён классов в пользовательском SQL, передаётся через конструктор.

customClassMapping

Добавление пользовательского сопоставления полных имён классов с короткими именами. Обычно не требуется.

Может использоваться, когда в разных пакетах есть классы с одинаковыми именами, но нужно использовать короткие имена в SQL.

tablePrefixMap

Определение префиксов таблиц. Во многих случаях разные проекты или модули имеют разные префиксы таблиц, но у классов сущностей нет префикса. Например, таблица ss_user соответствует классу сущности User.

Map<String, String> tablePrefixMap = new LinkedHashMap<>();
tablePrefixMap.put("com.sonsure", "ss_");
mappingHandler.setTablePrefixMap(tablePrefixMap);

Эта конфигурация автоматически добавит префикс ss_ при преобразовании имён всех классов сущностей в пакете com.sonsure.

PS: Если на классе сущности используются аннотации, то будут использоваться имена, указанные в аннотациях.

Если предоставленный по умолчанию DefaultMappingHandler не удовлетворяет требованиям, можно реализовать или переписать соответствующие методы преобразования.

Затем при объявлении JdbcEngine установите:

<bean id="jdbcTemplateEngine" class="com.sonsure.dumper.springjdbc.config.JdbcTemplateEngineFactoryBean">
    <!-- ...... -->
    <property name="mappingHandler" ref="customMappingHandler"/>
</bean>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/selfly-sonsure-dumper.git
git@api.gitlife.ru:oschina-mirror/selfly-sonsure-dumper.git
oschina-mirror
selfly-sonsure-dumper
selfly-sonsure-dumper
master