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

OSCHINA-MIRROR/troyzhxu-bean-searcher

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CHANGELOG.md 89 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 22.04.2025 23:44 9be8fcd

v4.4.1 @ 2023-03-25

🌻 Улучшения

  • Bean Searcher Label
    • Оптимизация вызова интерфейса LabelLoader, чтобы гарантировать, что параметр ids в методе load(key, ids) имел значение
    • Оптимизация аннотации @LabelFor, чтобы поддерживать указание на поля родительского и дочернего классов

v4.4.0 @ 2025-03-19

✨ Новые возможности* Bean Searcher

  • Добавлен IndexArrayParamFilter: поддерживает разбор параметров вида key[0]=v1 & key[1]=v2
  • Улучшен SuffixOpParamFilter: теперь поддерживает объединение параметров, таких как игнорирование регистра символов, например: name-ct-ic=xxx
  • Улучшен MetaResolver: добавлен метод clearCache(), который позволяет вручную очищать кэш BeanMeta
  • Улучшен @DbIgnore: теперь поддерживает аннотацию других пользовательских аннотаций, чтобы они обладали функциональностью @DbIgnore
  • Добавлен AnnoUtils: может использоваться для разбора составных аннотаций
  • Bean Searcher Label (Первый выпуск)
    • Предоставлена аннотация @LabelFor, которая наследует от @DbIgnore, и может использоваться для аннотации и разбора полей Label (например: поле statusName может быть аннотировано как Label для status)
    • Предоставлен интерфейс LabelLoader, который может использоваться для загрузки пользовательских Label
    • Предоставлен класс EnumLabelLoader, который используется для загрузки Label для перечислений
  • Bean Searcher Boot Starter
    • Добавлен параметр конфигурации bean-searcher.params.filter.use-index-array для управления включением IndexArrayParamFilter, по умолчанию false
    • Добавлена автоматическая конфигурация для Bean Searcher Label
  • Bean Searcher Solon Plugin
    • Добавлен параметр конфигурации bean-searcher.params.filter.use-index-array для управления включением IndexArrayParamFilter, по умолчанию false
    • Добавлена автоматическая конфигурация для Bean Searcher Label# v4.3.6 @ 2025-01-23

🌻 Улучшения

  • Улучшен JsonFieldConvertor: теперь поддерживает преобразование всех составных генериков

🐛 Исправления ошибок

  • Исправлено: EnumParamConvertor: несовместимость с пустыми строковыми параметрами

v4.3.5 @ 2024-11-06## ✨ Новые возможности* Bean Searcher

* Улучшение `DateParamConvertor`, чтобы поддерживались следующие 8 форматов параметров типа `Date`:
  * `yyyy-MM-dd` - например: `2024-01-01`
  * `yyyy-M-dd` -- например: `2024-1-01` (новый)
  * `yyyy-MM-d` -- например: `2024-01-1` (новый)
  * `yyyy-M-d` --- например: `2024-1-1` (новый)
  * `yyyy/MM/dd` - например: `2024/01/01`
  * `yyyy/M/dd` -- например: `2024/1/01` (новый)
  * `yyyy/MM/d` -- например: `2024/01/1` (новый)
  * `yyyy/M/d` --- например: `2024/1/1` (новый)
* Улучшение `DateTimeParamConvertor`, чтобы поддерживались следующие 312 форматов параметров типа `DateTime`:
  * `yyyy-MM-dd` ---------- автоматически дополняется до `yyyy-MM-dd 00:00:00.000`
  * `yyyy-MM-dd H` -------- автоматически дополняется до `yyyy-MM-dd H:00:00.000` (новый)
  * `yyyy-MM-dd HH` ------- автоматически дополняется до `yyyy-MM-dd HH:00:00.000`
  * `yyyy-MM-dd H:m` ------ автоматически дополняется до `yyyy-MM-dd H:m:00.000` (новый)
  * `yyyy-MM-dd HH:m` ----- автоматически дополняется до `yyyy-MM-dd HH:m:00.000` (новый)
  * `yyyy-MM-dd H:mm` ----- автоматически дополняется до `yyyy-MM-dd H:mm:00.000` (новый)
  * `yyyy-MM-dd HH:mm` ---- автоматически дополняется до `yyyy-MM-dd HH:mm:00.000`
  * `yyyy-MM-dd H:m:s` ---- автоматически дополняется до `yyyy-MM-dd H:m:s.000` (новый)
  * `yyyy-MM-dd HH:m:s` --- автоматически дополняется до `yyyy-MM-dd HH:m:s.000` (новый)
  * `yyyy-MM-dd H:mm:s` --- автоматически дополняется до `yyyy-MM-dd H:mm:s.000` (новый)
  * `yyyy-MM-dd H:m:ss` --- автоматически дополняется до `yyyy-MM-dd H:m:ss.000` (новый)
  * `yyyy-MM-dd HH:mm:s` -- автоматически дополняется до `yyyy-MM-dd HH:mm:s.000` (новый)
  * `yyyy-MM-dd HH:m:ss` -- автоматически дополняется до `yyyy-MM-dd HH:m:ss.000`000` (новый)
  * `yyyy-MM-dd H:mm:ss` -- автоматически дополняется до `yyyy-MM-dd H:mm:ss.  000` (новый)
  * `yyyy-MM-dd HH:mm:ss` - автоматически дополняется до `yyyy-MM-dd HH:mm:ss.  000`
  * `yyyy-MM-dd H:m:s.  S` ------ например: `2024-01-01 1:1:1.  9` (новый)
  * `yyyy-MM-dd H:m:s.  SS` ----- например: `2024-01-01 1:1:1.  09` (новый)
  * `yyyy-MM-dd H:m:s.  SSS` ---- например: `2024-01-01 1:1:1.  009` (новый)
  * `yyyy-MM-dd HH:m:s.  S` ----- например: `2024-01-01 01:1:1.  9` (новый)
  * `yyyy-MM-dd HH:m:s.  SS` ---- например: `2024-01-01 01:1:1.  09` (новый)
  * `yyyy-MM-dd HH:m:s.  SSS` --- например: `2024-01-01 01:1:1.  009` (новый)
  * `yyyy-MM-dd H:mm:s.  S` ----- например: `2024-01-01 1:01:1.  9` (новый)
  * `yyyy-MM-dd H:mm:s.  SS` ---- например: `2024-01-01 1:01:1.  09` (новый)
  * `yyyy-MM-dd H:mm:s.  SSS` --- Например: `2024-01-01 1:01:1.  009` (новый)
  * `yyyy-MM-dd H:m:ss.  S` ----- Например: `2024-01-01 1:1:01.  9` (новый)
  * `yyyy-MM-dd H:m:ss.  SS` ---- Например: `2024-01-01 1:1:01.  09` (новый)
  * `yyyy-MM-dd H:m:ss.  SSS` --- Например: `2024-01-01 1:1:01.  009` (новый)
  * `yyyy-MM-dd HH:mm:s.  S` ---- Например: `2024-01-01 01:01:1.  9` (новый)
  * `yyyy-MM-dd HH:mm:s.  SS` --- Например: `2024-01-01 01:01:1.  09` (новый)
  * `yyyy-MM-dd HH:mm:s.  SSS` -- Например: `2024-01-01 01:01:1.  009` (новый)
  * `yyyy-MM-dd HH:m:ss.  S` ---- Например: `2024-01-01 01:1:01.  9` (новый)
  * `yyyy-MM-dd HH:m:ss.  SS` --- Например: `2024-01-01 01:1:01.  09` (новый)
  * `yyyy-MM-dd HH:m:ss.  SSS` -- Например: `2024-01-01 01:1:01.  009` (новый)
  * `yyyy-MM-dd H:mm:ss.  S` ---- Например: `2024-01-01 1:01:01.  9` (новый)
  * `yyyy-MM-dd H:mm:ss.  SS` --- Например: `2024-01-01 1:01:01.  09` (новый)
  * `yyyy-MM-dd H:mm:ss.  SSS` -- Например: `2024-01-01 1:01:01.  009` (новый)
  * `yyyy-MM-dd HH:mm:ss.  S` --- Например: `2024-01-01 01:01:01.  9` (новый)
  * `yyyy-MM-dd HH:mm:ss.  SS` -- Например: `2024-01-01 01:01:01.  09` (новый)
  * `yyyy-MM-dd HH:mm:ss.  `SSS` - Например: `2024-01-01 01:01:01.009`
  > Всего 18 форматов времени для даты `yyyy-MM-dd [Time]`. Также поддерживаются 7 дополнительных серий форматов времени, каждая из которых содержит 39 вариантов, которые не перечислены здесь:
  > * `yyyy-M-dd [Time]` -- Серия форматов (новый)
  > * `yyyy-MM-d [Time]` -- Серия форматов (новый)
  > * `yyyy-M-d [Time]` -- Серия форматов (новый)
  > * `yyyy/MM/dd [Time]` -- Серия форматов (новый)
  > * `yyyy/M/dd [Time]` -- Серия форматов (новый)
  > * `yyyy/MM/d [Time]` -- Серия форматов (новый)
  > * `yyyy/M/d [Time]` -- Серия форматов (новый)
  • Улучшение конфигурационных параметров, поддержка функции подсказок в IDEA (при условии установки плагина Solon)## 🐛 Исправления ошибок

  • Bean Searcher Boot Starter

v4.3.4 @ 2024-10-22

✨ Функции

  • Bean Searcher

    • Новое: OracleTimestampFieldConvertor, для совместимости с полем TIMESTAMP в Oracle.
    • Улучшение: метод field(..) в конструкторе параметров, для совместимости с использованием неопределённых типов (коллекции/одиночных значений).
    var params = MapUtils.builder()
            // ifTrue если true, возвращает List, иначе возвращает одиночное значение, типы совпадают, начиная с v4.3.4
            .field(User::getId, ifTrue ? List.of(1, 2, 3) : 4)
            .build();
    var params = MapUtils.builder()
            // ifTrue если true, возвращает массив, иначе возвращает одиночное значение, типы совпадают, начиная с v4.3.4
            .field(User::getId, ifTrue ? new int[] {1, 2, 3} : 4)
            .build();
    var params = MapUtils.builder()
            // ifTrue если true, возвращает массив объектов, иначе возвращает одиночное значение, типы совпадают, начиная с v4.3.4
            .field(User::getId, ifTrue ? new Integer[] {1, 2, 3} : 4)
            .build();
    ```* Bean Searcher Boot Starter
    * Новый конфигурационный параметр `bean-searcher.field-convertor.use-oracle-timestamp` для управления включением `OracleTimestampFieldConvertor`, по умолчанию `true`
    * Упрощение класса `BeanSearcherProperties`, определение внутренних подклассов как внешних классов
  • Bean Searcher Solon Plugin

    • Новый конфигурационный параметр bean-searcher.field-convertor.use-oracle-timestamp для управления включением OracleTimestampFieldConvertor, по умолчанию true
    • Упрощение класса BeanSearcherProperties, определение внутренних подклассов как внешних классов# v4.3.3 @ 2024-10-08

✨ Функции

  • Улучшение: BeanMeta сохраняет порядок объявления полей в классе сущности (то есть порядок генерации условий)
  • Улучшение: повышение уровня доступа метода extractFieldParams(..) в DefaultParamResolver для возможности переопределения в подклассах, что облегчает пользовательскую настройку
  • Улучшение: извлечение метода createBeanMeta(..) из DefaultMetaResolver, что облегчает пользовательскую настройку подкласса BeanMeta

🐛 Исправления ошибок

  • Исправление: проблема с нарушением правила порядка доступа в LRUCache по умолчанию для DefaultGroupResolver

🌻 Улучшения

  • Обновление Solon -> 2.9.4

v4.3.2 @ 2024-09-09

✨ Новые возможности

  • Bean Searcher
    • Улучшение DateTimeParamConvertor: поддержка целочисленных значений параметров времени
  • Bean Searcher Boot Starter
    • Добавление SpringSqlExecutor: исполнитель SQL с поддержкой транзакций Spring по умолчанию
    • Добавление конфигурационного параметра: bean-searcher.params.convertor.zone-id: настройка временной зоны для DateTimeParamConvertor
  • Bean Searcher Solon Plugin
    • Добавление SolonSqlExecutor: исполнитель SQL с поддержкой транзакций Solon по умолчанию
    • Добавление конфигурационного параметра: bean-searcher.params.convertor.zone-id: настройка временной зоны для DateTimeParamConvertor

v4.3.1 @ 2024-08-24

🌻 Улучшения* Добавление метода empty() в класс SearchResult

  • Добавление метода newNames() в класс RpcNames вместо метода newConfig()

  • Улучшение производительности метода buildForRpc() в конструкторе параметров

  • Обновление зависимостей: junit -> 5.10.3, slf4j -> 2.0.16, solon -> 2.9.0## 🐛 Исправление ошибок

  • Исправление ошибки в JsonFieldConvertor при конвертации сложных параметров типа List<A<B>>>: https://github.com/troyzhxu/bean-searcher/issues/99

v4.3.0 @ 2024-06-10## ✨ Новые возможности* Bean Searcher

* Улучшение `BeanMeta`: добавлен метод `getSqlSnippets()`, который позволяет пользователям получать все распарсенные SQL фрагменты для данного сущностного класса
* Улучшение `SearchSql`: добавлен метод `getSearchParam()`, который позволяет пользователям получать распарсенные параметры поиска в `SqlInterceptor`
* Улучшение `MapBuilder`: добавлены методы `or(.  .  )` и `and(.  .  )`, которые упрощают использование логических групп в бэкенде: https://gitee.com/troyzhxu/bean-searcher/issues/I9T66B
* Улучшение `MapBuilder`: добавлены методы `buildForRpc()` и `buildForRpc(RpcNames)`, которые позволяют создавать параметры для запроса к удалённым API-сервисам
* Улучшение `MapBuilder`: методы `field(FieldFn, Collection)` и `field(String, Collection)` теперь поддерживают передачу `null` в качестве второго параметра
* Улучшение `DefaultParamResolver`: добавлен атрибут `gexprMerge`, который позволяет контролировать, объединяются ли или заменяются ли переданные групповые выражения из фронтенда с помощью метода `groupExpr(.  .  )`: https://gitee.com/troyzhxu/bean-searcher/issues/I9TAV6
* Добавлен `JoinParaSerializer`: сериализатор для объединения параметров, который обрабатывает параметры типа коллекции, автоматически преобразуя их в строку, разделённую запятыми
* Добавлен `ArrayValueParamFilter`: используется в сочетании с методами `MapUtils.  flat(.  .  )` и `MapUtils.  flatBuilder(.  .  )`, чтобы поддерживать использование параметров типа массив, например, передача параметров из фронтенда: age=20 & age=30 & age-op=bt   * Добавлен `SuffixOpParamFilter`: упрощает передачу параметров из фронтенда, например, age-gt=25 вместо age=25 & age-op=gt
* Добавлен `JsonArrayParamFilter`: упрощает передачу параметров из фронтенда, например, age=[20,30] вместо age-0=20 & age-1=30
* Добавлены операторы `AlwaysTrue` (всегда истинно: `at`) и `AlwaysFalse` (всегда ложно: `af`): https://gitee.com/troyzhxu/bean-searcher/issues/I9TMFI
* Обновление `OracleDialect`: использование нового синтаксиса пагинации `offset ? rows fetch next ? rows only`, поддерживающего только версии Oracle 12c (выпущенные в июне 2013 года) и выше
* Улучшение `ExprParser`: добавлены константы логических операторов, логические операторы `&` и `|` больше не поддерживают пользовательские значения
* Улучшение `FieldParam`: добавлен метод `getIndex()` для внутреннего класса `Value`
  • Bean Searcher Boot Starter
    • Добавлен параметр конфигурации bean-searcher.params.group.mergeable, который позволяет указать, могут ли групповые выражения объединяться, по умолчанию true
    • Добавлен параметр конфигурации bean-searcher.params.filter.use-size-limit, который позволяет включать или отключать SizeLimitParamFilter, по умолчанию true
    • Добавлен параметр конфигурации bean-searcher.params.filter.use-array-value, который позволяет включать или отключать ArrayValueParamFilter, по умолчанию true
  • Новые конфигурационные параметры:
  • bean-searcher.params.filter.use-suffix-op — включить SuffixOpParamFilter, по умолчанию false
  • bean-searcher.params.filter.use-json-array — включить JsonArrayParamFilter, по умолчанию false
  • Поддержка настройки компонента JoinParaSerializer в виде бина* Bean Searcher Solon Plugin
  • Новые конфигурационные параметры:
  • bean-searcher.params.group.mergeable — возможность объединения групповых выражений, по умолчанию true
  • bean-searcher.params.filter.use-size-limit — включить SizeLimitParamFilter, по умолчанию true
  • bean-searcher.params.filter.use-array-value — включить ArrayValueParamFilter, по умолчанию true
  • bean-searcher.params.filter.use-suffix-op — включить SuffixOpParamFilter, по умолчанию false
  • bean-searcher.params.filter.use-json-array — включить JsonArrayParamFilter, по умолчанию false
  • Поддержка настройки компонента JoinParaSerializer в виде бина## 🌻 Улучшения* Обновлен Junit -> 5.10.2
  • Обновлен Solon -> 2.8.3

v4.2.9 @ 2024-04-25

🌻 Улучшения

  • Улучшен JsonFieldConvertor, теперь поддерживает поля типа byte[], возвращаемые базой данных (например, поле JSON в H2)

v4.2.8 @ 2024-04-24

🐛 Исправления ошибок

  • Исправлено: при использовании PgSQL, динамическое создание условия having с параметрами полей, которые присутствуют в списке select, приводит к ошибке с использованием псевдонима (этот синтаксис поддерживается в MySQL, но не в PgSQL).

🌻 Улучшения

  • Улучшено условие соответствия полей в ListFieldConvertor для полей типа List, где dbType не указан
  • Улучшена поддержка компонента bean-searcher-solon-plugin для использования без конфигурации
  • Обновлен Solon -> 2.7.5
  • Обновлен Spring Boot -> 2.7.18
  • Обновлен slf4j-api -> 2.0.13
  • Поддержка JDK 8

v4.2.7 @ 2024-01-16

🐛 Исправления ошибок

  • Исправлено: при использовании @SearchBean.fields, в некоторых случаях возникает ошибка NullPointerException

🌻 Улучшения

  • Обновлен Solon -> 2.6.5
  • Обновлен slf4j-api -> 2.0.11

v4.2.6 @ 2024-01-08

✨ Новые возможности

  • Улучшен JsonFieldConvertor, теперь поддерживает преобразование сложных JSON массивов в поля типа List<T>

🌻 Улучшения

  • Обновлен Solon -> 2.6.4
  • Обновлен Spring Boot -> 3.2.1
  • Обновлен slf4j-api -> 2.0.10

v4.2.5 @ 2023-12-13

🐛 Исправления ошибок

  • Исправлено: при использовании поля @SearchBean.orderBy как единственного параметра для сортировки, и отсутствии других параметров при запросе, все еще генерируется подзапрос order by. https://gitee.com/troyzhxu/bean-searcher/issues/I8NT9X## 🌻 Улучшения

  • Обновлен Spring Boot -> 3.1.6

  • Обновлен Solon -> 2.6.2

  • Обновлен slf4j -> 2.0.9

  • Обновлен xjsonkit -> 1.4.3

v4.2.4 @ 2023-08-02

  • Добавлено значение по умолчанию SQL_DATE для параметра конфигурации bean-searcher.params.convertor.date-target
  • Добавлено значение по умолчанию SQL_TIMESTAMP для параметра конфигурации bean-searcher.params.convertor.date-time-target
  • Добавлено значение по умолчанию SQL_TIME для параметра конфигурации bean-searcher.params.convertor.time-target

v4.2.3 @ 2023-08-02## ✨ Новые возможности Bean Searcher

  • Улучшен BaseSearcher, добавлено свойство failOnParamError, которое позволяет настроить, будет ли выбрасываться исключение при ошибке параметра. Значение по умолчанию — false.
  • Улучшен DateParamConvertor, теперь поддерживает преобразование подклассов java.util.Date и добавлено свойство target, которое позволяет настроить тип конвертации.
  • Улучшен DateTimeParamConvertor, теперь поддерживает преобразование подклассов java.util.Date и добавлено свойство target, которое позволяет настроить тип конвертации.
  • Улучшен TimeParamConvertor, добавлено свойство target, которое позволяет настроить тип конвертации.
  • Bean Searcher Boot Starter
    • Добавлен параметр конфигурации bean-searcher.params.fail-on-error, который позволяет настроить, будет ли выбрасываться исключение при ошибке параметра. Значение по умолчанию — false.
    • Добавлен параметр конфигурации bean-searcher.params.convertor.date-target.
    • Добавлен параметр конфигурации bean-searcher.params.convertor.date-time-target.
    • Добавлен параметр конфигурации bean-searcher.params.convertor.time-target.
  • Bean Searcher Solon Plugin
    • Добавлен параметр конфигурации bean-searcher.params.fail-on-error, который позволяет настроить, будет ли выбрасываться исключение при ошибке параметра. Значение по умолчанию — false.
    • Добавлен параметр конфигурации bean-searcher.params.convertor.date-target.
    • Добавлен параметр конфигурации bean-searcher.params.convertor.date-time-target.
    • Добавлен параметр конфигурации bean-searcher.params.convertor.time-target.## 🐛 Исправления ошибок* Bean Searcher
    • Исправление: при передаче букв в параметры, когда тип поля в сущности — целое число, возникает исключение IllegalArgumentException: https://gitee.com/troyzhxu/bean-searcher/issues/I7PZQ1
    • Исправление: потеря части условий при логической группировке в определённых случаях

v4.2.2 @ 2023-07-18

  • Исправление конфликта между NumberParamConvertor и EnumParamConvertor, NumberParamConvertor больше не обрабатывает преобразование полей типа enum
  • Улучшение JsonFieldConvertor, теперь поддерживает преобразование JSON значений, не являющихся строками (например, PGobject), в объекты

v4.2.1 @ 2023-07-13

✨ Новые возможности

  • Bean Searcher
    • Улучшение: DateFieldConvertor поддерживает преобразование типа Instant: https://gitee.com/troyzhxu/bean-searcher/pulls/9
    • Новое: EnumParamConvertor автоматически преобразует параметры типа String/Enum в номера значений (по умолчанию) или названия значений (определённые атрибутом @DbField.type)
    • Улучшение: при ошибке в методе PreparedStatement.setObject(..) всё равно выводится лог SQL
  • Bean Searcher Boot Starter
    • Автоматическое конфигурирование EnumParamConvertor
  • Bean Searcher Solon Plugin
    • Автоматическое конфигурирование EnumParamConvertor

🐛 Исправления ошибок

  • Bean Searcher

    • Исправление: при использовании динамического диалекта, по умолчанию, основной диалект не работает
  • Bean Searcher Boot Starter

    • Исправление: динамический диалект не конфигурируется автоматически
  • Bean Searcher Solon Plugin

    • Исправление: динамический диалект не конфигурируется автоматически## 🌻 Улучшения
  • Обновление Solon до версии v2.3.8

  • Обновление SpringBoot до версии v3.1.1

v4.2.0 @ 2023-05-08

✨ Новые возможности

  • Bean Searcher

    • Добавлены классы DynamicDialect и DynamicDialectSupport для поддержки динамических диалектов
    • Переименован метод FieldParam.Value.isEmptyValue() в FieldParam.Value.isEmpty()
    • Переименован класс AbstractSearcher в BaseSearcher
    • Улучшена функциональность DateTimeParamConvertor, теперь поддерживает парсинг параметров в форматах yyyy-MM-dd HH:mm:ss.SSS, yyyy-MM и yyyy
    • Обновлен slf4j до версии 2.0.7
  • Bean Searcher Boot Starter

    • Добавлена конфигурация bean-searcher.sql.dialect-dynamic, которая указывает, включена ли поддержка динамических диалектов, по умолчанию false
    • При включении динамического источника данных, поддерживается добавление соответствия источника данных и диалекта через внедрение бинов с аннотацией DataSourceDialect
    • Обновлен springboot до версии 3.0.6
  • Bean Searcher Solon Plugin

    • Добавлена конфигурация bean-searcher.sql.dialect-dynamic, которая указывает, включена ли поддержка динамических диалектов, по умолчанию false
    • При включении динамического источника данных, поддерживается добавление соответствия источника данных и диалекта через внедрение бинов с аннотацией DataSourceDialect
    • Обновлен solon до версии 2.2.17

🐛 Исправления ошибок

🌻 Улучшения

  • Улучшение производительности выполнения DefaultSqlExecutor

v4.1.1 @ 2023-03-06

🌻 Улучшения

  • Улучшение валидации SearchBean
  • Улучшение доступа к DefaultDbMapping.BeanField

v4.1.0 @ 2023-03-03

✨ Новые возможности

  • Bean Searcher
    • Улучшение: поддержка использования ParamConvertor для конвертации параметров, даже если @DbField.type имеет значение UNKNOWN
    • Переработка: ParamResolver.Convertor -> FieldConvertor.ParamConvertor, тип входного параметра DbType изменен на FieldMeta
    • Новая возможность: добавление атрибута name в аннотацию @DbField для явного указания имени параметра
    • Новая возможность: добавление атрибута cluster в аннотацию @DbField для явного указания, является ли это агрегатным полем
    • Новая возможность: добавление атрибута mapTo в аннотацию @DbField для явного указания, на какую таблицу следует отображать
    • Новая возможность: добавление атрибута fields в аннотацию @SearchBean для указания дополнительных динамических условий
    • Улучшение: логика генерации условий для @SearchBean.groupBy при использовании конкатенации параметров
    • Улучшение: улучшение логики разделения условий where и having при одновременном использовании groupBy и groupExpr
    • Улучшение: улучшение автоматического упрощения логических выражений
  • Bean Searcher Boot Starter
    • Поддержка кастомизации внедрения Bean через GroupPairResolver
  • Bean Searcher Solon Plugin
    • Первый выпуск плагина Solon (аналогичен bean-searcher-boot-starter)### 👨🏻‍💻 Вкладчики

Благодарим всех вкладчиков, которые работали над этим выпуском:

v4.0.1 @ 2023-02-25

✨ Новые возможности

  • Bean Searcher
    • Улучшение конвертера JsonFieldConvertor, добавление атрибута failOnError, который позволяет настроить, следует ли автоматически захватывать исключения JSON-парсинга (то есть игнорировать)
  • Bean Searcher Boot Starter
    • Добавление конфигурационного параметра bean-searcher.field-convertor.json-fail-on-error, который указывает, следует ли выбрасывать исключение при ошибке JSON-парсинга, по умолчанию true

🐛 Исправления ошибок

v4.0.0 @ 2023-01-31

✨ Новые возможности

  • Переработан cn.zhxu.bs.param.Operator -> cn.zhxu.bs.FieldOps

🐛 Исправления ошибок

  • Исправлен MapUtils.of(..) для статического метода.

v4.0.0.alpha3 @ 2023-01-29

✨ Новые возможности* Bean Searcher

  • Добавлен JsonFieldConvertor конвертер поля, совместимый с @DbField(type = DbType.JSON) для автоматического преобразования JSON полей в объекты, требуется добавить зависимость JSON (одна из следующих зависимостей):
    • cn.zhxu:xjsonkit-fastjson:1.4.2
    • cn.zhxu:xjsonkit-fastjson2:1.4.2
    • cn.zhxu:xjsonkit-gson:1.4.2
    • cn.zhxu:xjsonkit-jackson:1.4.2
    • cn.zhxu:xjsonkit-snack3:1.4.2
    • Ссылка: https://gitee.com/troyzhxu/xjsonkit
  • Добавлен ListFieldConvertor конвертер поля, который поддерживает автоматическое преобразование строковых полей в простые объекты List.
  • Улучшен NumberFieldConvertor, теперь поддерживает взаимное преобразование между BigDecimal и Integer Long Float Double Short Byte.
  • Улучшен DefaultDbMapping, добавлен метод setAroundChar(String), который поддерживает настройку символов-оболочки для идентификаторов, чтобы отличать системные зарезервированные слова (работает только для автоматически отображаемых таблиц и полей).
  • Улучшен MapUtils, добавлены 4 удобных метода для создания Map: of(k, v), of(k1, v1, k2, v2).
  • Обновлен slf4j-api -> 2.0.6
  • Обновлен springboot -> 3.0.2* Bean Searcher Boot Starter
  • Добавлен параметр конфигурации bean-searcher.sql.default-mapping.around-char, который позволяет настроить символы-оболочки для идентификаторов (например, символ ` в MySQL).
  • Добавлен параметр конфигурации bean-searcher.field-convertor.use-json, который указывает, следует ли автоматически добавлять JsonFieldConvertor, по умолчанию true.
  • Добавлен параметр конфигурации bean-searcher.field-convertor.use-list, который указывает, следует ли автоматически добавлять ListFieldConvertor, по умолчанию true.
  • Добавлен параметр конфигурации bean-searcher.field-convertor.list-item-separator, который используется для настройки разделителя для преобразования строки в поле List.
  • Улучшен параметр конфигурации bean-searcher.field-convertor.date-formats, теперь поддерживает использование - вместо : (так как : в ключах yml по умолчанию фильтруется).

v4.0.0.alpha2 @ 2022-12-02## ✨ Новые возможности* Bean Searcher

  • Удалены методы search(), searchFirst(), searchList() и searchAll() из интерфейса Searcher

  • Добавлены методы:

    • search(Class beanClass) -> SearchResult
    • search(Class beanClass, String summaryField) -> SearchResult
    • search(Class beanClass, String[] summaryFields) -> SearchResult
    • search(Class beanClass, FieldFns.FieldFn<T, ?> summaryField) -> SearchResult
    • search(Class beanClass, Map<String, Object> paraMap, String summaryField) -> SearchResult
    • search(Class beanClass, Map<String, Object> paraMap, FieldFns.FieldFn<T, ?> summaryField) -> SearchResult
    • searchFirst(Class beanClass) -> T / Map<String, Object>
    • searchList(Class beanClass) -> List / List<Map<String, Object>>
    • searchAll(Class beanClass) -> List / List<Map<String, Object>>
    • searchCount(Class beanClass) -> Number
    • searchSum(Class beanClass, String field) -> Number
    • searchSum(Class beanClass, String[] fields) -> Number[]
    • searchSum(Class beanClass, FieldFns.FieldFn<T, ?> field) -> Number
    • searchSum(Class beanClass, Map<String, Object> paraMap, FieldFns.FieldFn<T, ?> field) -> Number# v4.0.0.alpha1 @ 2022-12-01## ✨ Функции
  • Bean Searcher

    • Maven координаты groupId изменены -> cn.zhxu
    • Изменение пакета: com.ejlchina.searcher -> cn.zhxu.bs
    • Удаление устаревших API: свойства joinCond аннотации @SearchBean
    • Улучшение встроенных параметров: повышение совместимости, поддержка встроенных параметров, следом которых идет символ .
    • Если поле является числом, а переданный параметр не является числом, возвращается пустой результат
    • Аннотация @SearchBean добавляет свойство timeout, для контроля максимального времени выполнения медленных SQL-запросов
    • При использовании groupBy и логической группировки, если переданные параметры находятся внутри groupBy, используется условие в виде where: https://gitee.com/troyzhxu/bean-searcher/issues/I5V4ON
  • Bean Searcher Boot Starter

    • Поддержка Spring Boot 3

v3.8.2 @ 2022-09-16

v3.8.1 @ 2bk22-08-23

✨ Функции

Исправлено написание даты "2bk22-08-23" на "2022-08-23".* Bean Searcher

  • Новое: защита от глубокой пагинации, максимальное разрешенное смещение пагинации по умолчанию 20000

  • Улучшение: при слишком больших параметрах поиска (порог можно настроить), запрос не выполняется, возвращается пустой результат

  • Улучшение: при слишком сложных (порог можно настроить) или неправильных логических выражениях группировки, запрос не выполняется, возвращается пустой результат

  • Улучшение: при неправильных параметрах сортировки, запрос не выполняется, возвращается пустой результат

  • Улучшение: повышение производительности параметров построения и пометка метода Builder.toFieldName как устаревшего, добавление инструментария FieldFns

  • Улучшение: параметры построения добавляют методы asc(boolean sure) и desc(boolean sure)

  • Улучшение: параметры построения добавляют метод putAll(Map<String, ?> params)

  • Улучшение: при размере пагинации меньше или равном 0, запрос списка не выполняется

  • Улучшение: стандартизация сообщений об ошибках, все сообщения на английском

  • Bean Searcher Boot Starter

    • Новое: параметр конфигурации bean-searcher.params.filter.max-para-map-size, по умолчанию 150
    • Новое: параметр конфигурации bean-searcher.params.group.max-expr-length, по умолчанию 50
    • Новое: параметр конфигурации bean-searcher.params.pagination.max-allowed-offset, по умолчанию 20000
    • Новое: проверка параметров конфигурации: значение параметра bean-searcher.params.pagination.default-size не должно быть больше значения параметра bean-searcher.params.pagination.max-allowed-offsetparams. pagination. max-allowed-size, и оба должны быть больше 0`
    • Улучшение: стандартизация сообщений об ошибках, все сообщения на английском# v3.8.0 @ 2022-07-23## ✨ Функциональности* Bean Searcher
    • Улучшение аннотации @SearchBean: добавлено свойство having, которое позволяет указывать условия группировки
    • Улучшение аннотации @DbField: добавлено свойство type, которое позволяет пользователю вручную указывать тип поля базы данных, соответствующего данному свойству
    • Улучшение ParamResolver: добавлен конвертер параметров Convertor, который позволяет преобразовывать типы значений параметров поиска в типы полей базы данных для лучшей совместимости с базами данных Oracle, PostgreSQL и т. д.
    • Добавлены конвертеры параметров BoolParamConvertor, NumberParamConvertor, DateParamConvertor, TimeParamConvertor и DateTimeParamConvertor
    • Добавлен оператор NotLike (nk): https://github.com/troyzhxu/bean-searcher/issues/50
    • Улучшение FieldOp.OpPara: добавлен метод getFieldSql(String field), который позволяет пользователю настраивать получение информации о других полях внутри оператора
    • Улучшение DefaultDbMapping: если значение аннотации @SearchBean.tables представляет собой одну таблицу, то свойства аннотации @DbField автоматически отображаются
    • Улучшение механизма построения параметров: добавлен метод sql(...), который позволяет использовать пользовательские SQL-условия: https://github.com/troyzhxu/bean-searcher/issues/51
    • Добавлен механизм "корневого параметра" (представляется символом $, пользовательские группы параметров не могут содержать $), по умолчанию используется корневой параметр * Переработка FieldConvertor: девять реализующих классов были перемещены из пакета com.ejlchina.searcher.implement в пакет com.ejlchina.searcher.convertor
    • Переработка DialectWrapper: перемещены из пакета com.ejlchina.searcher.implement в пакет com.ejlchina.searcher.dialect
    • Переработка аннотации @SearchBean: добавлено свойство where, заменяющее свойство joinCond, а свойство joinCond помечено как устаревшее
    • Удалено DateValueCorrector, заменено DateParamConvertor и DateTimeParamConvertor
    • Удалены NullValueFilter и BoolValueFilter (заменены BoolParamConvertor)
    • Улучшено создание динамических условий группировки: https://github.com/troyzhxu/bean-searcher/issues/56
    • Улучшено автоматическое отображение свойств аннотации @DbField, если значение аннотации @SearchBean.tables представляет собой одну таблицу
    • Улучшены сообщения об ошибках
  • Bean Searcher Boot Starter

    • Поддержка конфигурации одного ParamResolver.Convertor как Spring Bean для расширения возможностей преобразования значений параметров
    • Удалено конфигурационное поле bean-searcher.sql.use-date-value-corrector
    • Обновлено spring-boot до версии v2.6.9# v3.7.1 @ 2022-06-22## 🌻 Улучшения
  • Bean Searcher

    • Улучшение параметр_строитель: добавлены методы orderBy(FieldFn<T, ?> fieldFn), orderBy(String fieldName), asc() и desc()
    • Улучшение параметр_строитель: методы onlySelect(..) и selectExclude(..) теперь поддерживают передачу строковых параметров, разделённых запятыми, например age,name
  • Bean Searcher Boot Starter

    • Улучшение: при добавлении пользовательского параметра фильтра, встроенный параметр фильтра не перезаписывается

v3.7.0 @ 2022-06-04


🌻 Improvements

  • Bean Searcher
    • Improvement parameter_builder: added methods orderBy(FieldFn<T, ?> fieldFn), orderBy(String fieldName), asc() and desc()
    • Improvement parameter_builder: methods onlySelect(..) and selectExclude(..) now support passing string parameters separated by commas, for example age,name
  • Bean Searcher Boot Starter
    • Improvement: when adding a custom filter parameter, the built-in filter parameter is not overwritten

v3.7.0 @ 2022-06-04## ✨ Новые возможности* Bean Searcher

* Добавлено реализация диалекта `SqlServerDialect`, поддерживающая SQL Server 2012+
* Добавлен оператор `OrLike`, см.  https://github.com/troyzhxu/bean-searcher/issues/38
* Улучшено `SqlExecutor`: добавлен интерфейс `SlowListener`, позволяющий пользователям слушать медленные SQL-запросы в коде
* Улучшено `DefaultDbMapping`: добавлен атрибут `underlineCase`, позволяющий настроить преобразование стиля `camelCase` в `snake_case` при автоматической маппинге
* Улучшено `Dialect`: добавлен метод `hasILike()`, который позволяет использовать ключевое слово `ilike` базы данных для улучшения производительности запросов при игнорировании регистра
* Улучшено `EnumFieldConvertor`: поддержка преобразования целых чисел в перечисления (по номеру перечисления)
* Улучшено `EnumFieldConvertor`: добавлен атрибут `failOnError`, который позволяет настроить вывод ошибки при невозможности преобразования неправильных значений, по умолчанию `true`
* Улучшено `EnumFieldConvertor`: добавлен атрибут `ignoreCase`, который позволяет настроить игнорирование регистра при сравнении строковых значений с перечислениями, по умолчанию `false`
* Улучшено логирование SQL: обычные SQL-запросы отображают время выполнения, а логи медленных SQL-запросов уровня `WARN` включают связанные с ними сущности
* Улучшено `DefaultSqlExecutor`: при выполнении запроса `count` и получении результата `0`, запрос `list` не выполняется
* Улучшено поведение методов `page(...)` и `limit(...)`)` параметра конструктора: начальные номера страниц также подчиняются настройкам страниц (разрушительное обновление)
* Улучшено `Dialect`: добавлено стандартное реализование для `toUpperCase()`, при создании пользовательского диалекта необходимо реализовать только метод `forPaginate()`
* Улучшено `DefaultParamResolver`: по умолчанию используется параметр `page` для разделения страниц
* Улучшено поведение `count` и `sum` в поиске: при отсутствии записей для подсчета, возвращается `0` вместо `null`, и снова улучшена производительность поиска
* Переработан `FetchType#ALL`: переименован в `FetchType#DEFAULT`
  • Bean Searcher Boot Starter

    • Добавлен ключ конфигурации bean-searcher.sql.slow-sql-threshold, который позволяет настроить порог медленных SQL-запросов (в миллисекундах), по умолчанию 500
    • Добавлен ключ конфигурации bean-searcher.sql.default-mapping.underline-case, который позволяет настроить преобразование стиля camelCase в snake_case при автоматической маппинге, по умолчанию true
    • Добавлен ключ конфигурации bean-searcher.field-convertor.enum-fail-on-error, который позволяет настроить вывод ошибки при невозможности преобразования неправильных значений, по умолчанию true
    • Добавлен ключ конфигурации bean-searcher.field-convertor.enum-ignore-case, который позволяет настроить игнорирование регистра при сравнении строковых значений с перечислениями, по умолчанию false
    • Поддерживается настройка пользователем Spring Bean SqlExecutorSlowListener` для слушания медленных SQL-запросов
    • Поддерживается настройка пользователем конфигурации bean-searcher.sql.диалект (dialect) установлен как SqlServer для использования диалекта SQL Server
    • обновить spring-boot -> v2.6.8 # v3.6.3 v3.5.5 @ 2022-05-11## 🐛 Исправления ошибок
  • Исправлено возникновение ошибки NoSuchMethodError при наличии поля типа LocalDate в сущностях при использовании JDK8: https://github.com/troyzhxu/bean-searcher/issues/43

v3.6.2 @ 2022-05-11

🌻 Улучшения

v3.6.2 @ 2022-05-11

🌻 Улучшения

  • Bean Searcher Boot Starter: обновлено spring-boot -> 2.6.7

v3.5.4 @ 2022-05-11

🌻 Улучшения

  • Bean Searcher Boot Starter: обновлено spring-boot -> 2.6.7

🐛 Исправления ошибок

  • Исправлено: при наличии аннотации @SearchBean с указанием свойства groupBy в сущностях, не поддерживалось суммирование полей
  • Исправлено: методы page(..) и limit(..) в MapUtils.builder(..) не подчинялись ограничению конфигурации max-allowed-size

v3.6.1 @ 2022-05-09

✨ Новые возможности

  • Bean Searcher
    • Добавлен конвертер полей BoolNumFieldConvertor: поддерживает конвертацию в направлении Boolean -> Number
    • Улучшен SearcherBuilder: добавлен метод addResultFilter(..)
  • Bean Searcher Boot Starter
    • Добавлен ключ конфигурации bean-searcher.field-convertor.use-bool-num, позволяющий автоматически настроить BoolNumFieldConvertor, по умолчанию установлено значение true

🐛 Исправления ошибок

  • Исправлено: методы page(..) и limit(..) в MapUtils.builder(..) не подчинялись ограничению конфигурации max-allowed-size

v3.6.0 @ 2022-04-21

🐛 Исправления ошибок

  • Исправлено: методы page(..) и limit(..) в MapUtils.builder(..) не подчинялись ограничению конфигурации max-allowed-size

Исправлены ошибки в тексте:

  • Yöntem Bulunamadı переведено как NoSuchMethodError
  • Убраны лишние пробелы и исправлены ошибки в тексте.## ✨ Новые возможности* Bean Searcher
    • SQL фрагменты внутри аннотации @SearchBean для сущностных классов поддерживают экранирование символа : с помощью \\:
    • Аннотация @SearchBean для сущностных классов получила новое свойство orderBy, которое позволяет указать по умолчанию поле для сортировки
    • Аннотация @SearchBean для сущностных классов получила новое свойство sortType, которое позволяет указать тип ограничений сортировки
    • Аннотация @SearchBean для сущностных классов, когда указывается свойство groupBy, поддерживает запросы на суммирование полей
    • В поисковик добавлена новая механика ResultFilter, которая позволяет пользователям выполнять дополнительную настройку результатов поиска
    • Добавлен новый диалект PostgreSqlDialect, который может использоваться для баз данных PostgreSQL
    • Переработан класс SqlResult, который теперь не связан с JDBC, что облегчает переписывание SqlExecutor с использованием других ORM
    • Переработан класс SqlInterceptor, метод intercept(. . ) которого получил новое свойство FetchType
    • Добавлен класс B2MFieldConvertor, который позволяет BFieldConvertor использовать MapSearcher поисковик
    • Удален метод addDataSource(. . ) из класса DefaultSqlExecutor, который был помечен как устаревший в версии v3. 0. 0
    • Удален метод addFormat(. . ) из класса DateFormatFieldConvertor, который был помечен как устаревший в версии v3. 0. 1 * При использовании оператора in/Include выводится предупреждение, рекомендующее использовать оператор ct/Contain
    • При использовании оператора mv/MultiValue выводится предупреждение, рекомендующее использовать оператор il/InList
  • Bean Searcher Boot Starter
    • Добавлен новый ключ конфигурации bean-searcher.sql.default-mapping.inherit-type, который позволяет указать тип наследования сущностных классов по умолчанию, по умолчанию ALL
    • Добавлен новый ключ конфигурации bean-searcher.sql.default-mapping.sort-type, который позволяет указать тип ограничений сортировки по умолчанию, по умолчанию ALLOW_PARAM
    • Поддерживается добавление фильтра ResultFilter для BeanSearcher и MapSearcher поисковиков с помощью Spring Bean
    • Конфигурация bean-searcher.sql.dialect поддерживает указание PostgreSQL или PgSQL для использования диалекта PostgreSql
    • Добавлен новый ключ конфигурации bean-searcher.field-convertor.use-b2-m, который позволяет указать, следует ли использовать B2MFieldConvertor, по умолчанию false

v3.5.3 @ 2022-04-06## 🌻 Улучшения

  • Bean Searcher Boot Starter: обновлен spring-boot -> 2.6.6

🐛 Исправления ошибок

  • Исправлено: для полей типа Boolean, когда передается пустая строка в качестве параметра при поиске, BoolValueFilter преобразует это в true: https://github.com/troyzhxu/bean-searcher/issues/29

v3.5.2 @ 2022-03-17

✨ Новые возможности

  • Bean Searcher: параметр-строитель теперь поддерживает методы field(FieldFn<T, ?> fieldFn, Collection<?> values) и field(String fieldName, Collection<?> values), которые позволяют передавать коллекции значений для полей

🌻 Улучшения

  • Bean Searcher Boot Starter: обновлен spring-boot -> 2.6.4

🐛 Исправления ошибок

  • Исправлено: при отсутствии сортировочных полей в SELECT-запросе, ORDER BY-запрос все еще использует псевдонимы полей

v3.5.1 @ 2022-02-24

🌻 Улучшения

  • Улучшена способность к упрощению сложных логических выражений
  • Обновлен slf4j-api -> 1.7.36

v3.5.0 @ 2022-02-23

✨ Новые возможности* Bean Searcher

  • Добавлены компоненты GroupResolver, ExprParser и другие, которые реализуют параметризацию групп, логические отношения, выражения, вычисления, упрощение и анализ

  • DefaultParamResolver теперь поддерживает свойства gexprName и groupSeparator для указания формата имени групповых параметров

  • MapBuilder (параметр-строитель) теперь поддерживает метод group(String group) для создания групповых параметров

  • MapBuilder теперь поддерживает метод groupExpr(String expr) для указания логических отношений между группами параметров

  • Добавлен TimeFieldConvertor, который поддерживает преобразование между java.sql.Time и LocalTime

  • Аннотация @DbField теперь поддерживает свойство alias для ручного указания псевдонима поля (если не указано, то псевдоним генерируется автоматически)

  • Bean Searcher Boot Starter

    • Добавлен ключ конфигурации bean-searcher.params.group.enable, который позволяет указать использование групповых параметров в конфигурационном файле, по умолчанию true
    • Добавлен ключ конфигурации bean-searcher.params.group.expr-name, который позволяет указать имя группового выражения параметра, по умолчанию gexpr
    • Добавлен ключ конфигурации bean-searcher.params.group.expr-cache-size, который позволяет указать размер кэша для анализа групповых выражений, по умолчанию 50
    • Добавлен ключ конфигурации bean-searcher.params.group.separator, который позволяет указать разделитель групповых параметров, по умолчанию .
    • Добавлен ключ конфигурации bean-searcher.field-convertor.use-time, который указывает, следует ли автоматически добавлять TimeFieldConvertor, по умолчанию true`# v3. 4. 3 @ 2022-02-21## 🐛 Исправления ошибок
  • Исправлен баг с неправильной работой оператора StartWith (впервые появился в версии v3.4.2)

v3.4.2 @ 2022-02-18

🌻 Улучшения

  • Поля с встроенными параметрами теперь могут участвовать в фильтрации и статистике полей

🐛 Исправления ошибок

  • Исправлен баг с невозможностью конвертации java.sql.Date в LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с смещением часовых поясов при конвертации LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с невозможностью форматирования java.sql.Date / java.sql.Time конвертером DateFormatFieldConvertor

v3.4.1 @ 2022-02-11

🌻 Улучшения

  • Bean Searcher
    • Оптимизирована логика генерации SQL: при наличии только одного объединенного параметра в аннотации @SearchBean и его пустом значении, параметр не будет участвовать в подзапросе where

🐛 Исправления ошибок

  • Исправлен баг с невозможностью конвертации java.sql.Date в LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с смещением часовых поясов при конвертации LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с невозможностью форматирования java.sql.Date / java.sql.Time конвертером DateFormatFieldConvertor

v3.3.3 @ 2022-02-11

🌻 Улучшения

  • Bean Searcher

    • Обновлено slf4j-api с версии 1.7.32 до 1.7.35
    • Оптимизированы аннотации
    • Улучшена информация об ошибках
  • Bean Searcher Boot Starter

    • Обновлено spring-boot с версии 2.6.2 до 2.6.3
    • Убраны ненужные конфигурационные подсказки## 🐛 Исправления ошибок
  • Исправлен баг с невозможностью конвертации java.sql.Date в LocalDate / LocalDateTime конвертером DateFieldConvertor

  • Исправлен баг с смещением часовых поясов при конвертации LocalDate / LocalDateTime конвертером DateFieldConvertor

  • Исправлен баг с невозможностью форматирования java.sql.Date / java.sql.Time конвертером DateFormatFieldConvertor

v3.2.4 @ 2022-02-11

🌻 Улучшения

  • Bean Searcher Boot Starter
    • Убраны ненужные конфигурационные подсказки

🐛 Исправления ошибок

  • Исправлен баг с невозможностью конвертации java.sql.Date в LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с смещением часовых поясов при конвертации LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с невозможностью форматирования java.sql.Date / java.sql.Time конвертером DateFormatFieldConvertor

v3.1.4 @ 2022-02-11

🌻 Улучшения

  • Bean Searcher
    • Улучшен конвертер BoolFieldConvertor, теперь поддерживается конвертация Boolean -> boolean
  • Bean Searcher Boot Starter
    • Больше не требуется обязательное наличие DataSource, теперь поддерживаются проекты Grails
    • Убраны ненужные конфигурационные подсказки

🐛 Исправления ошибок

  • Исправлен баг с невозможностью конвертации java.sql.Date в LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с смещением часовых поясов при конвертации LocalDate / LocalDateTime конвертером DateFieldConvertor
  • Исправлен баг с невозможностью форматирования java.sql.Date / java.sql.Time конвертером DateFormatFieldConvertor

v3.4.0 @ 2022-02-09## ✨ Функции

  • Bean Searcher
    • Улучшение метода MapBuilder.orderBy(..), теперь поддерживает несколько вызовов для сортировки по нескольким полям
    • Добавлен параметр сортировки orderBy, который можно использовать в формате orderBy=age:asc,time:desc для указания нескольких полей для сортировки
    • Переработаны классы DefaultSqlResolver, Dialect, SqlSnippet и другие
    • Удален метод StringUtils.firstCharToUpperCase(..)
    • В классе DefaultDbMapping добавлен атрибут ignoreFields, который позволяет настроить глобальное игнорирование полей
    • В аннотации @SearchBean добавлен атрибут ignoreFields, который позволяет настроить игнорирование полей для отдельного класса (можно игнорировать поля родительского класса)
  • Bean Searcher Boot Starter
    • Добавлен параметр конфигурации bean-searcher.sql.default-mapping.ignore-fields, который позволяет указать глобальное игнорирование полей в конфигурационном файле
    • Добавлен параметр конфигурации bean-searcher.params.order-by, который позволяет указать имя параметра сортировки в конфигурационном файле

🌻 Улучшения

  • Bean Searcher
    • Улучшены сообщения об ошибках
    • Улучшены аннотации
    • Обновлено slf4j-api с версии 1.7.32 до 1.7.35
  • Bean Searcher Boot Starter
    • Улучшены подсказки конфигурации
    • Обновлено spring-boot с версии 2.6.2 до 2.6.3

v3.3.2 @ 2022-02-07

🌻 Улучшения

  • Bean Searcher
    • Улучшение BoolFieldConvertor, теперь поддерживает конвертацию Boolean -> boolean# v3.2.3 @ 2022-01-30

🌻 Улучшения

  • Bean Searcher
    • Улучшение BoolFieldConvertor, теперь поддерживает конвертацию Boolean -> boolean
  • Bean Searcher Boot Starter
    • Улучшение BeanSearcherAutoConfiguration, теперь не требуется обязательное наличие DataSource
    • Поддержка использования bean-searcher-boot-starter в проектах Grails

v3.3.1 @ 2022-01-21

✨ Функции

  • Bean Searcher
    • В классе MapBuilder добавлен метод op(Class<? extends FieldOp> op)
    • Улучшение DateValueCorrector, теперь можно настроить поддерживаемые операторы
  • Bean Searcher Boot Starter
    • Добавлен параметр конфигурации bean-searcher.sql.use-date-value-corrector, который позволяет настроить использование DateValueCorrector
    • Поддержка использования bean-searcher-boot-starter в проектах Grails

🌻 Улучшения

  • Bean Searcher
    • Улучшение логики соответствия операторов полей: теперь используется строгий режим
    • Улучшение констант Operator, теперь они могут быть использованы напрямую в @DbField.onlyOn (совместимо с предыдущими версиями, что облегчает обновление)
  • Bean Searcher Boot Starter
    • Улучшение механизма автоматической конфигурации, теперь поддерживается автоматическая конфигурация без DataSource

🐛 Устранение ошибок

  • Устранена проблема, при которой повторное использование оператора new для одного и того же поля приводило к увеличению размера FieldOpPool

v3.2.2 @ 2021-12-20

🌻 Улучшения* Bean Searcher

  • Улучшена DateValueCorrector, чтобы она поддерживала поля типа LocalDateTime
  • Bean Searcher Boot Starter
    • Улучшена автоматическая конфигурация, чтобы она не зависела от DataSourceAutoConfiguration, а конфигурировалась автоматически при наличии DataSource
  • Изменение лицензии на Apache-2.0# v3.3.0 @ 2022-01-19

✨ Новые возможности

  • Bean Searcher
    • Добавлен интерфейс FieldOp, который пользователи могут использовать для расширения своих операторов полей
    • Добавлен класс FieldOpPool, который пользователи могут использовать для создания собственных операторов полей
    • Внутренне добавлены операторы NotIn / ni и NotBetween / nb
    • Внутренний оператор MultiValue / mv переименован в InList / il (старые операторы по-прежнему доступны)
    • В DefaultDbMapping добавлен атрибут redundantSuffixes, который позволяет конфигурировать удаление избыточных суффиксов из названий таблиц для сущностей (например, VO, DTO и т.д.)
    • Упрощен Dialect: удалены методы truncateToDateStr, truncateToDateMinuteStr и truncateToDateSecondStr
  • Bean Searcher Boot Starter
    • Добавлен параметр конфигурации bean-searcher.sql.default-mapping.redundant-suffixes, который позволяет конфигурировать несколько избыточных суффиксов
    • Поддерживается объявление Spring Bean типа FieldOp для расширения нового оператора полей
    • Поддерживается объявление Spring Bean типа FieldOpPool для создания нового набора операторов полей
  • Изменение лицензии на Apache-2.0

v3.2.1 @ 2021-12-18

🌻 Улучшения

  • Bean Searcher
    • Без аннотации @DbIgnore автоматически игнорируются статические и транзитные поля в сущностях
    • Поддерживается переопределение полей в подклассах сущностей

🐛 Устранение ошибок

🌻 Улучшения

  • Bean Searcher
    • Без аннотации @DbIgnore автоматически игнорируются статические поля в сущностях
  • Bean Searcher Boot Starter
    • При инжекции типа Searcher по умолчанию инжектируется MapSearcher, что больше не вызывает ошибок
    • Улучшена совместимость, минимальная поддерживаемая версия SpringBoot увеличена до v1.4+

v3.0.5 @ 2021-12-12

🌻 Улучшения

  • Bean Searcher
    • Без аннотации @DbIgnore автоматически игнорируются статические поля в сущностях
  • Bean Searcher Boot Starter
    • При инжекции типа Searcher по умолчанию инжектируется MapSearcher, что больше не вызывает ошибок
    • Улучшена совместимость, минимальная поддерживаемая версия SpringBoot увеличена до v1.4+

v3.2.0 @ 2021-12-08

✨ Функции* Bean Searcher

  • Переработка FieldConvertor: удаление избыточного параметра targetType

  • Добавление EnumFieldConvertor: для конвертации полей перечислений

  • Поддержка наследования в классе SearchBean (можно наследовать аннотацию @SearchBean и отображаемые поля)

  • Добавление свойства inheritType в аннотацию @SearchBean: для управления правилами наследования

  • Добавление свойства defaultInheritType в класс DefaultDbMapping: для конфигурации правил наследования по умолчанию для сущностей

  • Поддержка пропуска методов установки (setter) для отображаемых полей в классе SearchBean

  • Добавление оператора ct (сокращение от Contain): для замены оператора in (сокращение от Include), использование in будет выдавать предупреждение

  • Bean Searcher Boot Starter

    • Добавление конфигурации bean-searcher.field-convertor.use-enum: указывает, следует ли автоматически добавлять EnumFieldConvertor, значение по умолчанию true
    • Добавление конфигурации bean-searcher.use-map-searcher: указывает, следует ли автоматически создавать MapSearcher, значение по умолчанию true
    • Добавление конфигурации bean-searcher.use-bean-searcher: указывает, следует ли автоматически создавать BeanSearcher, значение по умолчанию true## 🌻 Улучшения
  • Bean Searcher Boot Starter

    • При использовании типа Searcher для внедрения поискового механизма, по умолчанию внедряется MapSearcher, больше не выдаёт ошибку
    • Улучшение совместимости, минимальная поддерживаемая версия SpringBoot — v1.4+

v3.1.2 & v3.0.4 @ 2021-12-02

🌻 Улучшения

  • Улучшение вызова JDBC, совместимость с sharding-jdbc
  • Улучшение метода Operator.from(Object)
  • Улучшение инструмента MapBuilder, добавление проверки на пустоту

v3.1.1 & v3.0.3 @ 2021-12-01

✨ Функции

  • Улучшение модификаторов доступа методов DefaultSqlResolver для удобства переиспользования в подклассах

🐛 Исправление ошибок

  • Улучшение правил генерации псевдонимов, совместимость с базой данных Oracle

v3.1.0 @ 2021-11-15

✨ Функции

  • Bean Searcher * Добавление подинтерфейсов BFieldConvertor и MFieldConvertor конвертеров полей: для повышения производительности конвертации полей
    • Добавление DateFieldConvertor: для поддержки конвертации между типами Date и LocalDateTime
    • Улучшение DateFormatFieldConvertor: для поддержки форматирования объектов типа Temporal и его подклассов
    • Улучшение DateFormatFieldConvertor: добавление метода setZoneId(ZoneId): для конфигурации часового пояса
    • Улучшение DefaultSqlExecutor: добавление метода setTransactionIsolation(int level): для конфигурации уровня изоляции транзакций
    • Улучшение DbMapping: для полного управления процессом разбора отображения данных и извлечения DefaultDbMapping из внутреннего использования в DefaultMetaResolver
    • Улучшение DefaultDbMapping: для поддержки конфигурации префикса таблиц по умолчанию и включения/отключения отображения в верхнем регистре, то есть поддержка отображения таблиц и столбцов в верхнем регистре по умолчанию
    • Bean Searcher Boot Starter
    • Поддержка конфигурации бина типа NamedDataSource для добавления нескольких именованных данных источников
    • Автоматическое добавление зависимости spring-boot-starter-jdbc
    • По умолчанию автоматическая конфигурация добавляет NumberFieldConvertor
    • По умолчанию автоматическая конфигурация добавляет StrNumFieldConvertor
    • По умолчанию автоматическая конфигурация добавляет BoolFieldConvertor
    • По умолчанию автоматическая конфигурация добавляет DateFieldConvertor * По умолчанию автоматическая конфигурация добавляет DateFormatFieldConvertor
    • Поддержка конфигурации файла для указания имени таблицы и по умолчанию отображения полей в нижнем регистре или верхнем регистре
    • Поддержка конфигурации файла для указания префикса по умолчанию для отображения имени таблицы# v3.0.2 @ 2021-11-10

🐛 Исправления ошибок

  • Исправлено: в версии v3.0.0, при использовании отдельно методов searchCount и searchSum, получение SQL результата приводило к ошибке

v3.0.1 @ 2021-11-05

✨ Новые возможности

  • В DateFormatFieldConvertor добавлен метод setFormat

🐛 Исправления ошибок

  • Исправлено: в версии v3.0.0, при отсутствии атрибута joinCond аннотации @SearchBean, в SQL запросах с условиями отсутствовал один левый скобочный символ после where

v3.0.0 Мажорное обновление @ 2021-11-04

✨ Новые возможности

  • Поддержка горячей перезагрузки
  • Поддержка без аннотаций
  • Поддержка выборки с указанием конкретных полей
  • Поддержка ограничений условий и операторов
  • Поддержка фильтров параметров
  • Поддержка конвертеров полей
  • Поддержка перехватчиков SQL
  • Поддержка нескольких источников данных
  • Поддержка JDK 9+

Версия документа: markdown
Исходный язык: китайский
Финальный язык: русский#### Bean Searcher* Упрощение интерфейса Searcher, удаление ненужных методов (методы поиска с последним параметром prefix были удалены)

  • Оптимизация архитектуры: SearchBean поддерживает горячую перезагрузку, при активации горячей перезагрузки, изменения в SearchBean вступают в силу без перезапуска
  • Удаление вспомогательных классов SearchPlugin и SpringSearcher, так как использование Bean Searcher в версии v3.0 проще, чем использование этих вспомогательных классов
  • Упрощение класса SearchResult, удаление ненужных полей, оставление только полей totalCount, dataList и summaries
  • Добавление подинтерфейсов Searcher: MapSearcher и BeanSearcher с соответствующими реализациями, методы поиска в MapSearcher возвращают данные типа Map, а методы поиска в BeanSearcher возвращают данные типа Search Bean
  • Переработка конструктора SearcherBuilder для упрощения создания экземпляров MapSearcher или BeanSearcher
  • Добавление поддержки вложенных параметров в свойстве groupBy аннотации @SearchBean, при отсутствии вложенных параметров используется пустая строка (ранее использовалась строка "null")
  • Абстрагирование интерфейсов BeanReflector и FieldConvertor для упрощения механизма рефлексии объектов SearchBean и упрощения расширения и кастомизации
  • Добавление четырёх реализаций конвертеров полей: NumberFieldConvertor, StrNumFieldConvertor, BoolFieldConvertor и DateFormatFieldConvertor, которые могут быть выбраны пользователем
  • Добавление интерфейса DbMapping для отображения базы данных и предоставление реализации отображения с использованием нижнего подчеркивания, что позволяет пользователям упрощать сценарии использования без использования аннотаций @SearchBean и @DbField.
  • Добавление свойства dataSource в аннотацию @SearchBean для указания источника данных для поиска.
  • Добавление свойства autoMapTo в аннотацию @SearchBean для указания автоматического отображения полей без аннотации @DbField на определенную таблицу.
  • Добавление аннотации @DbIgnore для указания полей, которые следует игнорировать, то есть поля с этой аннотацией не будут отображаться в базе данных.
  • Добавление свойств conditional и onlyOn в аннотацию @DbField для управления использованием поля в качестве условия поиска и поддержкой определенных операторов полей.
  • Добавление интерфейса ParamAware, реализация которого позволяет SearchBean получать исходные параметры поиска в методе afterAssembly(Map<String, Object> paraMap).
  • Добавление параметров onlySelect и selectExclude (имена параметров могут быть настроены), которые могут быть использованы для указания полей для выбора или исключения.
  • Добавление интерфейса SqlInterceptor для реализации функции перехватчика SQL-запросов.

Bean Searcher Boot Starter* Упрощенное использование, теперь не требуется запускать стартовые операции и указывать путь к пакету SearchBean (удален класс SearcherStarter)

  • Функция автоматической конфигурации Spring Boot выделена в отдельный проект Bean Searcher Boot Starter, проект Bean Searcher больше не зависит от Spring

JDK

  • Поддерживает JDK 8+
  • Справедливая поддержка механизма модульного ввода в JDK 9+

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

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

1
https://api.gitlife.ru/oschina-mirror/troyzhxu-bean-searcher.git
git@api.gitlife.ru:oschina-mirror/troyzhxu-bean-searcher.git
oschina-mirror
troyzhxu-bean-searcher
troyzhxu-bean-searcher
dev