@SearchBean
свойство joinCond
имеет только один параметр соединения и значение этого параметра пустое, то этот параметр не участвует в условии WHERE
java.sql.Date
в LocalDate / LocalDateTime
в классе DateFieldConverter
LocalDate / LocalDateTime
в классе DateFieldConverter
java.sql.Date / java.sql.Time
в классе DateFormatFieldConverter
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
, позволяющая указывать имя параметра для сортировки в файлах конфигурацииslf4j-api
с версии OnClickListener 1.7.32 до 1.7.35spring-boot
с версии 2.6.2 до 2.6.3BoolFieldConvertor
, теперь поддерживается конвертация в направлении Boolean
-> boolean
.MapBuilder
добавлен метод op(Class<? extends FieldOp> op)
DateValueCorrector
, теперь можно конфигурировать поддерживаемые операторыbean-searcher.sql.use-date-value-corrector
, значение по умолчанию — true
, указывает использовать ли корректор значений датbean-searcher-boot-starter
в проектах GrailsOperator
, который теперь может использоваться как значение атрибута @DbField.onlyOn
(совместимо с предыдущими версиями, что облегчает обновление)DataSourceAutoConfiguration
и бинов типа DataSource
в контейнере SpringFieldOpPool
при множественном создании одного и того же оператора пользователямиFieldOp
, который позволяет пользователям расширять свои операторы полейFieldOpPool
для создания нового набора операторов полейNotIn
/ ni
и NotBetween
/ nb
MultiValue
/ mv
переименован в InList
/ il
(ранее существующий оператор все ещё доступен)DefaultDbMapping
получил новое свойство redundantSuffixes
, которое позволяет конфигурировать удаление лишних суффиксов из названий таблиц при автоматическом отображении сущностей (например, VO, DTO и т.д.)Dialect
: удалены методы truncateToDateStr
, truncateToDateMinuteStr
и truncateToDateSecondStr
bean-searcher.sql.default-mapping.redundant-suffixes
для указания нескольких лишних суффиксовFieldOp
для расширения новых операторов полейFieldOpPool
для создания нового набора операторов полей@DbIgnore
также автоматически игнорируются статические (static
) и временные (transient
) свойства в сущностяхEmpty
/ NotEmpty
для неприсоединённых полей типа String: https://gitee.com/ejlchina-zhxu/bean-searcher/issues/I4N1MG
FieldConvertor
: удаление избыточного параметра targetType
EnumFieldConvertor
: для конвертации полей с типом enum@SearchBean
получила новый атрибут inheritType
, который позволяет контролировать правила наследованияDefaultDbMapping
получил новый атрибут defaultInheritType
, позволяющий настроить правила наследования для сущностей по умолчаниюct
(Contain
), замена оператора in
(Include
). При использовании in
выводится предупреждение.bean-searcher.field-convertor.use-enum
, указывающий на автоматическое использование EnumFieldConvertor
. По умолчанию установлено значение true
bean-searcher.use-map-searcher
, указывающий на автоматическое создание объекта MapSearcher
. По умолчанию установлено значение true
bean-searcher.use-bean-searcher
, указывающий на автоматическое создание объекта BeanSearcher
. По умолчанию установлено значение true
MapSearcher
, что больше не вызывает ошибок * Улучшена совместимость, минимальная версия Spring Boot теперь поддерживается начиная с версии v1. 4+JDBC
, совместимость с sharding-jdbc
Operator.from(Object)
MapBuilder
, добавлена проверка на незаполненные значенияJDBC
, совместимость с sharding-jdbc
Operator.from(Object)
MapBuilder
, добавлена проверка на незаполненные значенияDefaultSqlResolver
, чтобы облегчить переиспользование подклассамиDefaultSqlResolver
, чтобы облегчить переиспользование подклассамиBFieldConverter
и MFieldConverter
, что повышает эффективность преобразования полейDateFieldConverter
, поддерживающий преобразование между типами Date
и LocalDateTime
DateFormatFieldConverter
, который теперь поддерживает форматирование объектов типа Temporal
и его подклассовDateFormatFieldConverter
, добавлена возможность установки часового пояса методом setZoneId(ZoneId)
DefaultSqlExecutor
, добавлен метод setTransactionIsolation(int level)
для настройки уровня изоляции транзакцийDbMapping
, который теперь полностью управляет процессом парсинга данных и освобождает DefaultDbMapping
от зависимости от DefaultMetaResolver
DefaultDbMapping
, добавлена поддержка настройки префикса таблиц при использовании аннотаций по умолчанию и выбора режима использования верхнего регистра для названий таблиц и столбцовNamedDataSource
для добавления нескольких именованных источников данныхspring-boot-starter-jdbc
NumberFieldConverter
, StrNumFieldConverter
, BoolFieldConverter
, DateFieldConverter
и DateFormatFieldConverter
* Настройка файла конфигурации позволяет задавать по умолчанию префикс для отображаемых названий таблиц и выбирать режим использования нижнего или верхнего регистра для названий таблиц и столбцовsearchCount
и searchSum
отдельно возникает ошибка получения SQL-результата.DateFormatFieldConvertor
добавлен метод setFormat
joinCond
с аннотацией @SearchBean
, в генерируемом SQL запросе с условиями отсутствовал один левый скобочный символ после WHERE
.prefix
были удалены)SearchPlugin
и SpringSearcher
, поскольку использование Bean Searcher версии OnClickListener 3.0 проще, чем использование этих вспомогательных классовSearchResult
, удаление лишних полей, оставление только полей totalCount
, dataList
и summaries
MapSearcher
и BeanSearcher
для Searcher
со своими реализациями; методы поиска в MapSearcher
возвращают данные типа Map
, а методы поиска в BeanSearcher
возвращают данные типа generics Search BeanSearcherBuilder
для более удобного создания экземпляров MapSearcher
или BeanSearcher
@SearchBean
теперь поддерживает встраиваемые параметры свойства groupBy
; если встраиваемый параметр не передается, используется пустая строка (ранее использовалась строка "null"
)BeanReflector
и FieldConvertor
, что делает механизм рефлексии объектов SearchBean более декомпозируемым и легче расширяемымNumberFieldConvertor
, StrNumFieldConvertor
, BoolFieldConvertor
и DateFormatFieldConvertor
, которые можно использовать пользователями * Введен новый интерфейс DbMapping
для отображения базы данных, предоставляется реализация на основе нижнего подчеркивания, позволяющая пользователям в простых сценариях использования пропускать аннотации @SearchBean
и @DbField
.@SearchBean
получила новое свойство dataSource
, которое позволяет указывать источник данных для этого SearchBean.@SearchBean
получила новое свойство autoMapTo
, которое позволяет указывать автоматическое отображение полей без аннотации @DbField
на указанную таблицу.@DbIgnore
, которая позволяет игнорировать некоторые поля, то есть поля с этой аннотацией не будут отображаться в базе данных.@DbField
получила новые свойства conditional
и onlyOn
, что позволяет пользователям контролировать возможность использования данного поля в качестве условия поиска и поддерживаемые операторы полей.ParamAware
, реализация которого в SearchBean позволяет получить исходные параметры поиска в методе afterAssembly(Map<String, Object> paraMap)
.SqlInterceptor
, реализующий функцию SQL-интерцептора.SearcherStarter
был удалён)Исправление: Проблема бесконечной рекурсии при добавлении виртуальных параметров в конец SQL-фрагмента
Исправлена проблема с неправильной распознаваемостью второго виртуального параметра, когда они расположены слишком близко друг к другу.
Добавлена поддержка виртуальных параметров в формате :name:, значение которых будет прямо включено в SQL-запрос,而不将其作为 JDBC 参数传递。
При использовании таких параметров следует строго проверять источник значений параметров; они не должны передаваться напрямую от клиентской части, так как это может привести к риску SQL-инъекций.
Добавлена поддержка виртуальных параметров в формате :name:, значение которых будет прямо включено в SQL-запрос,而不将其作为 JDBC 参数传递。
При использовании таких параметров следует строго проверять источник значений параметров; они не должны передаваться напрямую от клиентской части, так как это может привести к риску SQL-инъекций.