Releases: troyzhxu/bean-searcher
Releases · troyzhxu/bean-searcher
v4.0.1
v4.0.0
v4.0.0.alpha3
✨ Features
-
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
,新增of(k, v)
,of(k1, v1, k2, v2)
等 4 个 便捷 Map 构造方法 - 升级
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 的 key 中:
默认会被过滤掉)
- 新增
v4.0.0.alpha2
✨ Features
- Bean Searcher
- 移除 Searcher 接口内的 search()、searchFirst()、searchList() 与 searchAll() 方法
- 新增方法: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
- Bean Searcher
- Maven 坐标 groupId 变更 ->
cn.zhxu
- 包名变更:
com.ejlchina.searcher
->cn.zhxu.bs
- 移除过时 API:
@SearchBean
注解的joinCond
属性 - 优化嵌入参数:提高兼容性,支持嵌入参数后紧跟了
.
符号 - 当字段是数字,但传参不是数字时,直接返回空数据
- 注解
@SearchBean
添加timeout
属性,用于控制慢 SQL 最大执行时长 - 当使用 groupBy 与 逻辑分组时,如果所传参数都在 groupBy 内,也使用 where 形式的条件: https://gitee.com/troyzhxu/bean-searcher/issues/I5V4ON
- Maven 坐标 groupId 变更 ->
- Bean Searcher Boot Starter
- 支持 Spring Boot 3
v3.8.2
- 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-size
大,且都必须大于0
- 优化:标准化异常提示信息,全部英文化
- 新增
v3.8.0
✨ Features
- Bean Searcher
- 增强
@SearchBean
注解:新增having
属性,用于指定分组条件 - 增强
@DbField
注解:新增type
属性,允许用户手动指定该属性对应的数据库字段类型 - 增强
ParamResolver
: 新增Convertor
参数转换器,可对检索参数的值类型转换为数据库字段匹配的类型(更好的兼容 Oracle、PgSQL 等数据库): #53 - 新增
BoolParamConvertor
、NumberParamConvertor
、DateParamConvertor
、TimeParamConvertor
与DateTimeParamConvertor
参数转换器 - 新增
NotLike
运算符(nk
):#50 - 增强
FieldOp.OpPara
:新增getFieldSql(String field)
方法,可以自定义运算符内获得其它字段的信息 - 增强
DefaultDbMapping
,当@SearchBean.tables
的值是单表时,则省略@DbField
的属性也自动映射 - 增强
参数构建器
:新增sql(..)
方法,可为用于自定义 SQL 条件:#51 - 新增
根参数
机制(用$
表示根组,用户构造的组表达式不可以包含$
),参数构建器默认使用 根参数:#52 - 重构
FieldConvertor
: 字段转换器的 9 个实现类 从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
替代) - 优化 分组动态查询条件生成机制:#56
- 优化 当
@SearchBean.tables
的值是单表时,则省略注解的字段属性也自动映射: #34 - 优化 异常提示信息
- 增强
- Bean Searcher Boot Starter
- 支持 用户配置一个
ParamResolver.Convertor
的 Spring Bean 扩展参数值转换能力 - 移除
bean-searcher.sql.use-date-value-corrector
配置项 - 升级
spring-boot
->v2.6.9
- 支持 用户配置一个
v3.7.1
v3.7.0
✨ Features
- Bean Searcher
- 新增
SqlServerDialect
方言实现,支持 SqlServer 2012+ - 新增
OrLike
运算符,参见:#38 - 增强
SqlExecutor
:新增SlowListener
接口,可让用户在代码中监听慢 SQL - 增强
DefaultDbMapping
:新增underlineCase
属性,可配置自动映射时是否开启驼峰->下划线
的风格转换 - 增强
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 Boot Starter
- 新增
bean-searcher.sql.slow-sql-threshold
配置键,可配置慢 SQL 阈值(单位毫秒),默认为500
- 新增
bean-searcher.sql.default-mapping.underline-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
- 新增