Слияние кода завершено, страница обновится автоматически
SearchBean
DefaultDbMapping
Bean Searcher
ParamConvertor
, даже если тип поля @DbField.type
равен UNKNOWN
ParamResolver.Convertor
на FieldConvertor.ParamConvertor
. Также изменён тип входящего параметра DbType
на FieldMeta
.@DbField
добавлено свойство name
, которое позволяет явно указывать имя параметра поля.@DbField
добавлено свойство cluster
, которое позволяет явно указывать является ли поле агрегатным.@DbField
добавлено свойство mapTo
, которое позволяет явно указывать таблицу, в которую поле отображается.@SearchBean
добавлено свойство fields
, которое используется для указания дополнительных динамических условий полей.@SearchBean.groupBy
со связыванием параметров.where
и having
при одновременном использовании groupBy
и groupExpr
.Bean Searcher Boot Starter
GroupPairResolver
.* Bean Searcher Solon Pluginbean-searcher-boot-starter
).Благодарим всех участников, работавших над этим выпуском:
JsonFieldConvertor
, добавлено новое поле failOnError
. Это позволяет настроить поведение при возникновении ошибок парсинга JSON для некоторых значений (то есть игнорировать их).bean-searcher.field-convertor.json-fail-on-error
, которая указывает, следует ли выбрасывать исключение при ошибке парсинга JSON. По умолчанию значение установлено в true
.xjsonkit
: https://gitee.com/troyzhxu/bean-searcher/issues/I6F4LS
cn.zhxu.bs.param.Operator
-> cn.zhxu.bs.FieldOps
MapUtils.of(..)
, сделав его static
методом.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
ListFieldConvertor
, который позволяет автоматически преобразовывать строки в простые объекты типа List.NumberFieldConvertor
, теперь он поддерживает взаимное преобразование между типами BigDecimal
, Integer
, Long
, Float
, Double
, Short
, Byte
.DefaultDbMapping
, добавлена методика setAroundChar(String)
, которая позволяет указать символьное окружение для идентификаторов, чтобы отличать системные ключевые слова (работает только для автоматически отображаемых таблиц и полей).MapUtils
, добавлены четыре удобных метода создания карт: of(k, v)
, of(k1, v1, k2, v2)
.slf4j-api
до версии 2.0.6
.Spring Boot
до версии 3.0.2
.* Bean Searcher Boot Starterbean-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
, который позволяет указать разделитель для преобразования строки в список.bean-searcher.field-convertor.date-formats
, теперь поддерживаются замены символа -
вместо :
(так как в YAML ключах символ :
может быть удален по умолчанию).search()
, searchFirst()
, searchList()
и searchAll()
из интерфейса Searchersearch(Class<T> beanClass)
-> SearchResult
search(Class<T> beanClass, String summaryField)
-> SearchResult
search(Class<T> beanClass, String[] summaryFields)
-> SearchResult
search(Class<T> beanClass, FieldFns.FieldFn<T, ?> summaryField)
-> SearchResult
search(Class<T> beanClass, Map<String, Object> paraMap, String summaryField)
-> SearchResult
search(Class<T> beanClass, Map<String, Object> paraMap, FieldFns.FieldFn<T, ?> summaryField)
-> SearchResult
searchFirst(Class<T> beanClass)
-> T
/ Map<String, Object>
searchList(Class<T> beanClass)
-> List<T>
/ List<Map<String, Object>>
searchAll(Class<T> beanClass)
-> List<T>
/ List<Map<String, Object>>
searchCount(Class<T> beanClass)
-> Number
searchSum(Class<T> beanClass, String field)
-> Number
searchSum(Class<T> beanClass, String[] fields)
-> Number[]
searchSum(Class<T> beanClass, FieldFns.FieldFn<T, ?> field)
-> Number
searchSum(Class<T> beanClass, Map<String, Object> paraMap, FieldFns.FieldFn<T, ?> field)
-> Number
ru.kizoo
com.ejlchina.searcher
-> ru.kizoo.bs
joinCond
аннотации @SearchBean
.
@SearchBean
получила новое свойство timeout
, которое используется для контроля максимальной длительности выполнения медленных запросов SQLgroupBy
и логической группировки, если все переданные параметры находятся внутри groupBy
, использовать условия в виде where
: https://github.com/kizoo/bean-searcher/issues/issue-number
Содержание может содержать违规信息
Поскольку в данном случае есть только одно предложение на китайском языке, которое требуется перевести на русский язык, то результат будет следующим:
Содержание может содержать незаконную информацию.
@SearchBean
: добавлено свойство having
, которое позволяет указывать условия группировки@DbField
: добавлено свойство type
, позволяющее пользователям вручную указывать тип поля базы данных, связанного с этим свойствомParamResolver
: добавлен конвертор параметров Converter
, который может преобразовать тип значения параметра поиска в тип поля базы данных для лучшей совместимости с базами данных типа Oracle, PostgreSQL и т. д.BoolParamConvertor
, NumberParamConvertor
, DateParamConvertor
, TimeParamConvertor
и DateTimeParamConvertor
NotLike
(nk
): https://github.com/ejlchina/bean-searcher/issues/50
FieldOp.OpPara
: добавлена методика getFieldSql(String field)
, которая позволяет пользователю создавать пользовательскую логику получения информации о других полях внутри оператораDefaultDbMapping
: если значение аннотации @SearchBean.tables
представляет собой одну таблицу, то отсутствие некоторых свойств автоматически приведёт к правильному отображениюsql(...)
, который позволяет использовать пользовательское условие SQL: https://github.com/ejlchina/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
)ParamResolver.Convertor
как Spring Bean для расширения способностей преобразования значений параметровbean-searcher.sql.use-date-value-corrector
spring-boot
до версии v2.6.9
orderBy(FieldFn<T, ?> fieldFn)
, orderBy(String fieldName)
, asc()
и desc()
."age,name"
с разделителями запятой для методов onlySelect(...)
и `selectExclude(...).SqlServerDialect
, поддерживающего Microsoft SQL Server 2012+OrLike
, см.: https://github.com/ejlchina/bean-searcher/issues/38SqlExecutor
: добавлен интерфейс SlowListener
, позволяющий пользователям слушать медленные SQL запросы в кодеDefaultDbMapping
: добавлена конфигурация свойства underlineCase
, которое позволяет включить преобразование стилей camelCase -> snake_case
Dialect
: добавлен метод hasILike()
, который повышает производительность запросов при игнорировании регистра с помощью ключевых слов базы данных ilike
EnumFieldConvertor
: поддержка преобразования целых чисел в перечисления (по номеру перечисления)EnumFieldConvertor
: добавлено свойство failOnError
, которое позволяет указывать, следует ли выбрасывать ошибку при невозможности преобразования незаконных значений; значение по умолчанию — true
EnumFieldConvertor
: добавлено свойство ignoreCase
, которое позволяет указывать, следует ли игнорировать регистр при сравнении строковых значений с перечислениями; значение по умолчанию — false
журналирования SQL
: обычные SQL запросы отображают время выполнения, журналы медленных SQL запросов уровня WARN
теперь содержат связанные сущностиDefaultSqlExecutor
: если выполняется запрос COUNT SQL и результат равен 0
, то запрос LIST SQL больше не выполняетсяpage(...
)и
limit(...)параметризатора: начальные страницы также ограничены конфигурацией страниц (***разрушительное обновление***) * Оптимизация
Dialect: добавлено стандартное реализование для
toUpperCase(...), пользователи могут переопределять только один метод
forPaginate(...) * Оптимизация
DefaultParamResolver: используется параметризатор
pageпо умолчанию * Оптимизация
countи
sumзапросов: если нет записей для подсчета, возвращается
0вместо
null, а также повторная оптимизация производительности * Переименован
FetchType#ALLв
FetchType#DEFAULT`bean-searcher.sql.slow-sql-threshold
, который позволяет установить пороговое значение времени выполнения медленных SQL запросов (в миллисекундах), значение по умолчанию — 500
bean-searcher.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
* Поддерживается возможность конфигурирования одного SqlExecutor.SlowListener
Spring Bean для прослушивания медленных SQL-запросов.*bean-searcher.sql.dialect
как SqlServer
для использования диалекта SQL Server.*spring-boot
до версии v2.6.8
.NoSuchMethodError
, когда в классах-сущностях присутствуют поля типа LocalDate
в JDK8: https://github.com/ejlchina/bean-searcher/issues/43
spring-boot -> 2.6.7
BoolNumFieldConvertor
: поддерживает преобразование в направлении Boolean -> Number
SearcherBuilder
, добавлен метод addResultFilter(...)
bean-searcher.field-convertor.use-bool-num
, который позволяет автоматически настроить BoolNumFieldConvertor
. По умолчанию значение этого ключа равно true
page(...)
и limit(...)
в MapUtils.builder(...)
, которая позволяла им игнорировать ограничение конфигурации max-allowed-size
:
в SQL-фрагментах аннотации @SearchBean
в сущностях: \\:
@SearchBean
сущностей добавлен атрибут orderBy
, который позволяет указывать поля для сортировки по умолчанию@SearchBean
сущностей добавлен атрибут sortType
, который позволяет указывать тип ограничений сортировкиgroupBy
в аннотации @SearchBean
сущностей поддерживается запрос суммы полейResultFilter
для поисковых движков, позволяющая пользователям выполнять дальнейшую настройку результатов поискаPostgreSqlDialect
, который может использоваться для баз данных PostgreSQLSqlResult
, отвязана от JDBC, что облегчает использование других ORM для переопределения SqlExecutor
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 Starterbean-searcher.sql.default-mapping.inherit-type
, который позволяет указывать тип наследования сущностей по умолчанию в файлах конфигурации, значение по умолчанию — ALL
.bean-searcher.sql.default-mapping.sort-type
, который позволяет указывать тип ограничений сортировки по умолчанию в файлах конфигурации, значение по умолчанию — ALLOW_PARAM
.ResultFilter
для BeanSearcher
и MapSearcher
через Spring Beans.bean-searcher.sql.dialect
, который позволяет указывать диалект PostgreSQL
или PgSQL
для использования диалекта PostgreSQL.bean-searcher.field-convertor.use-b2-m
, который позволяет указывать активацию конвертора B2MFieldConvertor
в файлах конфигурации, значение по умолчанию — false
.Boolean
, когда при поиске передается пустая строка в качестве значения поля, BoolValueFilter
преобразует её в true
: https://github.com/ejlchina/bean-searcher/issues/29
field(FieldFn<T, ?> fieldFn, Collection<?> values)
и field(String fieldName, Collection<?> values)
, поддерживающие передачу коллекций значений полей.GroupResolver
, ExprParser
и другие, что позволяет реализовать группировку параметров, логические отношения, вычисление, упрощение и анализ параметров.DefaultParamResolver
добавлены свойства gexprName
и groupSeparator
для указания формы имени группы параметров.MapBuilder
(построитель параметров) добавлен метод group(String group)
для создания групп параметров.MapBuilder
добавлен метод groupExpr(String expr)
для указания логических отношений между группами параметров.TimeFieldConvertor
, поддерживающий преобразование между типами данных java.sql.Time
и LocalTime
.@DbField
теперь имеет свойство alias
для возможности указания алиаса поля вручную (если не указано, то генерируется автоматически).* Bean Searcher Boot Starterbean-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
.