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

OSCHINA-MIRROR/trydofor-intellij-any2dto

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

ИнтелДжей Ам ту ди туо (Any2dto)

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

К сожалению, в большинстве проектов уровень доступа к базе данных (DAL) нарушает эту передовую практику, а именно:

  • SQL-запросы являются текстовыми, поэтому рефакторинг основан на текстовом поиске;
  • на основе сгенерированных POJO часто используется «select *» с избыточными полями;
  • существует большое количество преобразований DTO, обычно основанных на динамическом преобразовании с помощью рефлексии.

Плагин Any2Dto может генерировать DTO с точными полями строгих типов на основе запросов к базе данных или Java-кода.

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

Рекомендуется использовать статические внутренние классы в качестве DTO в сервисах, чтобы ограничить их использование вне сервиса. Преобразование DTO можно сгенерировать с помощью шаблона live от Wings, используя MapStruct.

На основе именования PSI будет использоваться выбранное выражение, а не имя во время выполнения.

В редакторе Java выберите поля Jooq для генерации DTO соответствующего строгого типа.

Именование на основе PSI использует выбранное выражение, а не оценку во время выполнения.

SysSchemaJournal t = SysSchemaJournal.SYS_SCHEMA_JOURNAL;
Field<Integer> count = count(t.COMMIT_ID).as("cnt");
Field<BigDecimal> par = DSL.field("1", BigDecimal.class);
val result = dsl.select(
    count, // <== private Integer count;
    par, // <== private BigDecimal par;
    t.CREATE_DT, // <== private LocalDateTime createDt;
    max(t.MODIFY_DT), // <== private java.time.LocalDateTime modifyDt;
    t.TABLE_NAME.as("tn"), // <== private java.lang.String tn;
    t.COMMIT_ID.add(t.COMMIT_ID).as(t.COMMIT_ID) // <== java.lang.Long commitId;
)

Выберите таблицы или столбцы в окне инструментов базы данных (требуется плагин базы данных), чтобы сгенерировать DTO для всех выбранных полей. Обратите внимание, что иногда требуется изменить сопоставление типов SQL и Java или переименовать поля с одинаковыми именами.

Проверьте бизнес-результат SELECT в консоли базы данных (нужен плагин базы данных) и сгенерируйте DTO непосредственно для всех полей запроса. Обратите внимание, что обычно требуется изменить сопоставление SQL и Java или переименовать поля.

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

Выберите SQL-SELECT и сгенерируйте код jooqDSL в стиле wings на панели буфера обмена. Поддерживаются только простые MySQL и Java. Для сложных SQL рекомендуется использовать jdbcTemplate, поскольку jooq — это не SQL, и цель использования jooq состоит в том, чтобы разделить сложные SQL.

Преобразуйте выбранный код в формат проверки Markdown.

Конфигурация

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

Настройки > Инструменты > Any2dto

Настройка

Генерируйте DTO из JooqDSL/базы данных/результата запроса/текста.

  • Куда сохранить — сохраните код DTO на панели буфера обмена или в файле Java;

  • Какой шаблон — внутренний класс или стандартный файл POJO;

  • Имя класса — по умолчанию Dto или каждый раз запрашивать;

  • Путь источника — при сохранении в файл Java . означает текущий проект;

  • Название пакета — имя пакета DTO, используемого во внешнем файле;

  • Разделитель строк — ... RegExp to split lines in selection

  • Word Separator — RegExp для разделения слов в каждой строке.

generate JooqDsl from SQL-select. support variables.

  • Table Naming — именование таблиц, см. подсказку ввода.
  • Column Naming — именование столбцов, см. подсказку ввода.
  • Jooq DSL — предложение и ссылка на DSLContext.

Type Mapping

Комментарий начинается с #, и ведущие пробелы игнорируются. TYPE_NAME(PRECISION,SCALE) = JAVA_CLASS, одно правило на строку: — TYPE_NAME нечувствительны к регистру; — PRECISION и SCALE — цифры, 1–3 = [1,2,3], * = ANY; — (PRECISION, SCALE) следует опустить, если соответствует ANY; — для простого CHAR(1,)=CHAR(1); CHAR()=CHAR; порядок FIFO, верхние совпадения первыми, остановка при совпадении.

Template Inner/Outer

Движок шаблонов — Meepo (https://github.com/trydofor/pro.fessional.meepo), имеющий тот же синтаксис, что и целевой файл. Есть некоторые встроенные переменные:

  • javaPackageName — пакет из конфигурации Package Name;
  • javaTypeImports — импорт класса для javaFields;
  • className — имя DTO в конфигурации или подсказке;
  • javaFields — поля DTO:
    • type — тип Java. Например, String;
    • name — имя Java. Например, author.

Формат переменных

Формат переменной и пример только для Sql2Dsl, а не Meepo:

  • переменная — {var} или {var|fun};
  • var — tab|ref|col;
  • fun — PascalCase|camelCase|BIG_SNAKE|snake_case;
  • предположим, x=moilion-circle, и {x}=moilion-circle;
  • {x|PascalCase}=MoilionCircle, {x|camelCase}=moilionCircle;
  • {x|BIG_SNAKE}=MOILION_CIRCLE, {x|snake_case}=moilion_circle.

Описание

Обычно использование сгенерированного Pojo для SELECT * — плохая практика. Лучше использовать SELECT ТОЛЬКО ТО, ЧТО ВАМ НУЖНО, и автоматически генерировать точный DTO.

Сгенерируйте код DTO по выбранному JavaCode, DbColumn, SqlResult, ValuedText.

Щелкните правой кнопкой мыши выделение в JavaEditor, SqlConsole или DatabaseView и выберите Any2Dto во всплывающих меню, после чего код DTO будет сгенерирован и скопирован в буфер обмена или пакет с предварительно настроенными правилами.

  • JooqCode — выберите поля Jooq в DSL, StrongType;
  • SqlResult — щелкните правой кнопкой мыши представление результатов запроса, MappedType;
  • Database — выберите столбцы в Database ToolWindow, MappedType;
  • ValuedText — выберите любые значения, разделенные пробелами, GuessType;
  • Sql2DSL — простой выбор mysql в стиле jooq wings;
  • Review — скопируйте код как markdown для просмотра.

Для более подробного использования перейдите на страницу https://github.com/trydofor/intellij-any2dto/.

Установка

Откройте «Настройки» > «Плагины» и:

— используя встроенную систему плагинов IDE: «Marketplace» > «Поиск Any2dto» > «Установить плагин»; — вручную: загрузите последний выпуск и установите его вручную, используя «⚙️» > «Установите плагин с диска...»; — разработчик: git clone, clean, compile, buildPlugin / runIde / publishPlugin.

Moilion Product

  • redis-replicator — реализация протокола репликации Redis на Java. Может анализировать, фильтровать, транслировать события RDB и AOF в режиме реального времени. Также может синхронизировать данные redis с вашим локальным кешем или базой данных.
  • moilioncircle — обмен любой темой, навыками, чтобы сделать жизнь проще и счастливее.
  • godbart — go-db-art, SQL-based CLI для управления версиями схемы RDBMS и миграции данных.
  • WingsBoot — java bootstrap springboot для стартап-команды для быстрой переработки и быстрой доставки. Типобезопасный, компилируемый, db-schema & table-record можно версионировать.
  • meepo — основанный на комментариях шаблонный движок для любого языка программирования.
  • mirara — общая библиотека Java для id, text, time, code и т. д.

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

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

Введение

Описание недоступно Развернуть Свернуть
Kotlin и 2 других языков
Отмена

Обновления

Пока нет обновлений

Участники

все

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

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/trydofor-intellij-any2dto.git
git@gitlife.ru:oschina-mirror/trydofor-intellij-any2dto.git
oschina-mirror
trydofor-intellij-any2dto
trydofor-intellij-any2dto
main