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

OSCHINA-MIRROR/yidasanqian-dynamic-add-date

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Dynamic-add-date — это плагин, основанный на принципах работы Mybatis, который позволяет динамически добавлять столбцы с датой и соответствующие значения в операторы SQL INSERT и UPDATE.

Он решает проблему ограничения MySQL 5.6.5 и более ранних версий в отношении автоматической инициализации временных меток:

  • столбцы DATETIME не поддерживают DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP;
  • DEFAULT CURRENT_TIMESTAMP и ON UPDATE CURRENT_TIMESTAMP можно использовать только для одного столбца TIMESTAMP на таблицу, и их нельзя применять к другому столбцу TIMESTAMP.

Требования:

  • поддержка JDK 7 и выше;
  • MySQL.

Функции:

  • возможность настраивать имена создаваемых столбцов с датами;
  • автоматическая обработка исходных операторов SQL, которые уже содержат настраиваемые имена столбцов;
  • поддержка создания столбцов с датой в операторах INSERT, UPDATE, пакетной вставки и пакетного обновления;
  • поддержка операторов INSERT INTO SELECT;
  • возможность игнорировать таблицы с использованием регулярных выражений.

Чтобы добавить Dynamic-add-date в своё приложение, необходимо выполнить следующие шаги:

  1. Добавить зависимость в файл pom.xml или build.gradle:
    <dependency>
        <groupId>io.github.yidasanqian</groupId>
        <artifactId>dynamic-add-date</artifactId>
        <version>1.1.0</version>
    </dependency>
  2. В файле mybatis-config.xml добавить следующую настройку:
    <plugins>
            <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor">
            </plugin>
    </plugins>
  3. В исходном операторе SQL вставить значения в столбцы name и profession:
    insert into user(name, profession) values(?, ?)
  4. После применения плагина оператор SQL будет выглядеть следующим образом:
    insert into user(name, profession, gmt_create, gmt_modified) values(?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10')
  5. Для пакетной вставки данных оператор SQL будет иметь вид:
    insert into user(name, profession) values(?, ?), (?, ?), (?, ?)
  6. После применения плагина он будет выглядеть так:
    insert into user(name, profession, gmt_create, gmt_modified) values(?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10'),
    (?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10'), (?, ?, '2017-10-15 10:10:10', '2017-10-15 10:10:10')
  7. Плагин поддерживает операторы INSERT INTO SELECT:
    INSERT INTO t_user(username, mobile, create_at)
        SELECT r.`name`, ?, r.create_at FROM t_role r;
  8. После применения плагина:
    INSERT INTO t_user (username, mobile, create_at, update_at) SELECT r.`name`, ?, '2019-07-06 10:36:51.066', '2019-07-06 10:36:51.066' FROM t_role r
  9. По умолчанию новые столбцы даты называются gmt_create и gmt_modified. Можно настроить имена этих столбцов, используя свойства createDateColumnName и updateDateColumnName:
    <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor">
        <property name="createDateColumnName" value="gmt_create"/>
        <property name="updateDateColumnName" value="gmt_modified"/>
    </plugin>

Для интеграции с Spring Boot необходимо выполнить следующее:

  1. Включить зависимость MyBatis в файле pom.xml:
    <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.4</version>
    </dependency>
  2. Создать пользовательскую конфигурацию:
    • XML-конфигурация: добавить настройки в файл mybatis-config.xml:
      <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor">
          <property name="createDateColumnName" value="gmt_create"/>
          <property name="updateDateColumnName" value="gmt_modified"/>
      </plugin>
    • Конфигурация через bean: создать bean в классе конфигурации:
      @Bean
      public AddDateInterceptor addDateInterceptor(){
          Properties properties = new Properties();
          properties.setProperty("createDateColumnName","gmt_create");
          properties.setProperty("updateDateColumnName","gmt_modified");
          AddDateInterceptor addDateInterceptor = new AddDateInterceptor();
          addDateInterceptor.setProperties(properties);
          return addDateInterceptor;
      }
  3. Настроить игнорирование таблиц:
    • XML-конфигурация: добавить настройки в файл mybatis-config.xml:
      <plugins>
          <plugin interceptor="io.github.yidasanqian.dynamicadddate.AddDateInterceptor">
              <property name="ignoreTables"
      ``` 2) Создание Bean-компонента:
@Bean
public AddDateInterceptor addDateInterceptor(){
    Properties properties = new Properties();
    properties.setProperty("createDateColumnName","gmt_create");
    properties.setProperty("updateDateColumnName","gmt_modified");
    properties.setProperty("ignoreTables","^user.*,permission");
    AddDateInterceptor addDateInterceptor = new AddDateInterceptor();
    addDateInterceptor.setProperties(properties);
    return addDateInterceptor;
}

Здесь атрибут name=ignoreTables имеет фиксированное значение и не может быть изменён. Значение атрибута value имеет формат имя_таблицы, имя_таблицы.

Значение атрибута value представляет собой имена таблиц, которые могут быть заданы с использованием регулярных выражений. Несколько имён таблиц разделяются запятой без пробела.

Комментарии ( 0 )

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

Введение

Dynamic-add-date — это плагин, разработанный на основе принципов работы плагина Mybatis, который позволяет динамически добавлять столбец с датой и соответствующее значение в операторы Insert и Update SQL. Развернуть Свернуть
MIT
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/yidasanqian-dynamic-add-date.git
git@api.gitlife.ru:oschina-mirror/yidasanqian-dynamic-add-date.git
oschina-mirror
yidasanqian-dynamic-add-date
yidasanqian-dynamic-add-date
master