What's New?
详细的版本信息请查阅 Github 与 Gitee , 本节主要介绍每个里程碑版本引入的新特性。
V4 版本
v4.4 的新特性(v4.4.2)
- Bean Searcher
- 新增
IndexArrayParamFilter: 支持解析形如key[0]=v1 & key[1]=v2的参数 - 增强
SuffixOpParamFilter: 使支持将 是否忽略大小写 也合并到一个参数中,例如:name-ct-ic=xxx - 增强
MetaResolver: 新增clearCache()方法,用于手动清除BeanMeta缓存 - 增强
@DbIgnore: 支持标注其它自定义注解,使其具有@DbIgnore的功能 - 新增
AnnoUtils: 可用于解析组合注解 - 增强
MapUtils工具类(since v4.4.2)- 添加
flat(Map<String, String[]> map, boolean urlDecode)方法,支持 指定知否进行 URL 解码 - 添加
flatBuilder(Map<String, String[]> map, boolean urlDecode)支持 指定知否进行 URL 解码 - 原
flat(Map<String, String[]> map)方法,默认进行 URL 解码 - 原
flatBuilder(Map<String, String[]> map)方法,默认进行 URL 解码
- 添加
- 新增
- Bean Searcher Label(首发)
- 提供
@LabelFor注解,该注解继承自@DbIgnore,可用于标注并解析 Label 字段(例如:将statusName字段标记为status的 Label) - 提供
LabelLoader接口,可用于加载自定义的 Label - 提供
EnumLabelLoader实现,用于加载枚举的 Label - 优化
LabelLoader接口的调用,确保load(key, ids)方法中的ids参数有值(since v4.4.1) - 优化
@LabelFor注解,支持指向父类和子类中的字段(since v4.4.1)
- 提供
- 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 的新特性(v4.3.6)
- 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年6月发布)及以上版本 - 优化
ExprParser:新增逻辑关系符常量,逻辑表达式中的且关系符&与 或关系符|不再支持自定义。 - 优化
FieldParam:其内部类Value新增getIndex()方法 - 增强
DateTimeParamConvertor: 使支持整型的时间戳参数值(since v4.3.2) - 优化
BeanMeta可保持检索实体类中的字段声明顺序(即条件生成顺序)(since v4.3.3) - 优化
DefaultParamResolver提升extractFieldParams(..)方法的权限,可供子类重写,便于用户自定义(since v4.3.3) - 优化
DefaultMetaResolver: 抽取createBeanMeta(..)方法,便于用户自定义BeanMeta子类(since v4.3.3) - 修复
DefaultGroupResolver的默认LRUCache缓存没有遵循访问顺序规则的问题(since v4.3.3) - 增强
DateParamConvertor,同时支持yyyy-MM-dd、yyyy-M-dd、yyyy-MM-d、yyyy-M-d、yyyy/MM/dd、yyyy/M/dd、yyyy/MM/d、yyyy/M/d格式的参数值,例如:2024-01-01、2024-1-01、2024-01-1、2024-1-1、2024/01/01、2024/1/01、2024/01/1、2024/1/1(since v4.3.5) - 增强
DateTimeParamConvertor,使其支持满足[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}(?: [0-9]{1,2}(?::[0-9]{1,2}(?::[0-9]{1,2}(?:\.[0-9]{1,3})?)?)?)?正则表达式下的所有格式的日期时间参数值(since v4.3.5) - 增强
JsonFieldConvertor: 使支持所有复合泛型的转换(since v4.3.6) - 修复
EnumParamConvertor: 不兼容空字符串参数的问题 - 升级 Junit -> 5.10.2 并完善单元测试
- 优化
- 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 - 支持以 Bean 的形式自定义
JoinParaSerializer组件 - 新增
SpringSqlExecutor: 支持 Spring 事务的 Sql 执行器,且默认使用(since v4.3.2) - 新增配置项:
bean-searcher.params.convertor.zone-id: 可配置DateTimeParamConvertor使用的时区(since v4.3.2)
- 新增配置项
- 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 - 支持以 Bean 的形式自定义
JoinParaSerializer组件 - 新增
SolonSqlExecutor: 支持 Solon 事务的 Sql 执行器,且默认使用(since v4.3.2) - 新增配置项:
bean-searcher.params.convertor.zone-id: 可配置DateTimeParamConvertor使用的时区(since v4.3.2) - 支持在 IDEA 内配置项提示功能(需要安装 IDEA Solon 插件)(since v4.3.5)
- 新增配置项
参考章节:字段参数、逻辑分组、参数过滤器、拼接参数、请求第三方 BS 服务
v4.2 的新特性(v4.2.9)
- Bean Searcher
- 新增
DynamicDialect与DynamicDialectSupport类,用于支持动态方言(v4.2.0) - 重构
FieldParam.Value.isEmptyValue()方法重命名为FieldParam.Value.isEmpty()(v4.2.0) - 重构
AbstractSearcher重命名为BaseSearcher(v4.2.0) - 优化
DateTimeParamConvertor, 使其支持解析yyyy-MM-dd HH:mm:ss.SSS、yyyy-MM与yyyy格式的参数(v4.2.0) - 增强
DateFieldConvertor支持Instant类型的转换:https://gitee.com/troyzhxu/bean-searcher/pulls/9(v4.2.1) - 新增
EnumParamConvertor对于枚举字段,可将String/Emun类型的参数自动转换为枚举序号(默认)或枚举名(由@DbField.type决定)(v4.2.1) - 优化
PreparedStatement.setObject(..)方法报错时,仍然打印 SQL 日志(v4.2.1) - 增强
JsonFieldConvertor,支持将非 String类型(例如:PGobject)的 JSON 值转换为对象(v4.2.2) - 增强
BaseSearcher,新增failOnParamError属性,可配置当参数错误时是否向外抛出异常,默认false(v4.2.3) - 增强
DateParamConvertor,支持java.util.Date子类的转换,并新增target属性,支持配置转换目标类型(v4.2.3) - 增强
DateTimeParamConvertor,支持java.util.Date子类的转换,并新增target属性,支持配置转换目标类型(v4.2.3) - 增强
TimeParamConvertor,新增target属性,支持配置转换目标类型(v4.2.3) - 增强
JsonFieldConvertor:使支持复杂JSON数组到泛型List<T>的字段转换(v4.2.6)
- 新增
- Bean Searcher Boot Starter
- 新增配置项
bean-searcher.sql.dialect-dynamic, 表示是否启用动态方言,默认false(v4.2.0) - 当启用动态数据源时,支持以
DataSourceDialect注入 Bean 的方式添加数据源与方言的映射关系(v4.2.0) - 自动配置
EnumParamConvertor(v4.2.1) - 新增配置项
bean-searcher.params.fail-on-error指定参数错误时,是否抛出异常,默认false(v4.2.3) - 新增配置项
bean-searcher.params.convertor.date-target(v4.2.3) - 新增配置项
bean-searcher.params.convertor.date-time-target(v4.2.3) - 新增配置项
bean-searcher.params.convertor.time-target(v4.2.3)
- 新增配置项
- Bean Searcher Solon Plugin
- 新增配置项
bean-searcher.sql.dialect-dynamic, 表示是否启用动态方言,默认false(v4.2.0) - 当启用动态数据源时,支持以
DataSourceDialect注入 Bean 的方式添加数据源与方言的映射关系(v4.2.0) - 自动配置
EnumParamConvertor(v4.2.1) - 新增配置项
bean-searcher.params.fail-on-error指定参数错误时,是否抛出异常,默认false(v4.2.3) - 新增配置项
bean-searcher.params.convertor.date-target(v4.2.3) - 新增配置项
bean-searcher.params.convertor.date-time-target(v4.2.3) - 新增配置项
bean-searcher.params.convertor.time-target(v4.2.3)
- 新增配置项
v4.1 的新特性(v4.1.2)
- Bean Searcher
- 优化:
@DbField.type为UNKNOWN时,也支持使用ParamConvertor进行参数值转换 - 重构:
ParamResolver.Convertor->FieldConvertor.ParamConvertor,且入参DbType类型修改为FieldMeta类型 - 功能:注解
@DbField新增name属性,可显式指定字段的参数名 - 功能:注解
@DbField新增cluster属性,可显式指定是否是聚合字段 - 功能:注解
@DbField新增mapTo属性,可显式指定映射到哪张表 - 功能:注解
@SearchBean新增fields属性,用于指定额外的动态条件字段 - 优化:注解
@SearchBean.groupBy使用拼接参数时,条件字段的生成逻辑 - 优化:完善
groupBy与groupExpr同时使用时where与having的条件拆分逻辑 - 优化:增强逻辑表达式的自动化简能力
- 优化:
- Bean Searcher Boot Starter
- 支持
GroupPairResolver以注入 Bean 的方式自定义
- 支持
- Bean Searcher Solon Plugin
- 首发 Solon 插件(功能同
bean-searcher-boot-starter)
- 首发 Solon 插件(功能同
v4.0 的新特性(v4.0.2)
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
- 移除 Searcher 接口内的 search()、searchFirst()、searchList() 与 searchAll() 方法
- 新增方法:
search(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 - 新增
JsonFieldConvertor字段转换器,配合@DbField(type = DbType.JSON)可支持 JSON 字段自动转对象,需要添加 JSON 依赖(以下依赖任选一个即可):cn.zhxu:xjsonkit-fastjson:1.5.1cn.zhxu:xjsonkit-fastjson2:1.5.1cn.zhxu:xjsonkit-gson:1.5.1cn.zhxu:xjsonkit-jackson:1.5.1cn.zhxu:xjsonkit-snack3:1.5.1- 参考:https://gitee.com/troyzhxu/xjsonkit
- 增强
JsonFieldConvertor字段转换器,新增failOnError字段,可配置遇到某些值 JSON 解析错误时,是否抛出异常 - 新增
ListFieldConvertor字段转换器,可支持将 字符串字段自动转为简单 List 对象 - 增强
NumberFieldConvertor,使支持BigDecimal与Integer Long Float Double Short Byte之间的相互转换 - 增强
DefaultDbMapping,新增setAroundChar(String)方法,支持配置标识符的围绕符,以区分系统保留字(只对自动映射的表与字段起作用) - 增强
MapUtils,新增of(k, v),of(k1, v1, k2, v2)等 4 个 便捷 Map 构造方法 - 重构
cn.zhxu.bs.param.Operator->cn.zhxu.bs.FieldOps
- Maven 坐标 groupId 变更 ->
Bean Searcher Boot Starter
- 支持 Spring Boot 3(仍然支持 SpringBoot 1.4 ~ 2.x)
- 新增
bean-searcher.sql.default-mapping.around-char配置项,可配置标识符的围绕符(例如 MySQL 的 ` 符) - 新增
bean-searcher.field-convertor.use-json配置项,表示是否自动添加JsonFieldConvertor,默认true - 新增
bean-searcher.field-convertor.json-fail-on-error配置项,表示 JSON 解析错误时,是否抛出异常,默认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 中:默认会被过滤掉)
V3 版本
v3.8 的新特性(v3.8.2)
- Bean Searcher
- 增强
@SearchBean注解:新增having属性,用于指定分组条件 - 增强
@DbField注解:新增type属性,允许用户手动指定该属性对应的数据库字段类型 - 增强
ParamResolver: 新增Convertor参数转换器,可对检索参数的值类型转换为数据库字段匹配的类型(更好的兼容 Oracle、PgSQL 等数据库) - 新增
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: 字段转换器的 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替代) - 优化 分组动态查询条件生成机制:https://github.com/troyzhxu/bean-searcher/issues/56
- 新增:分页大深度保护,默认最大允许分页偏移
20000条(since v3.8.1) - 优化:当检索参数过于庞大(阈值可配置)时,不执行查询,直接返回空数据(since v3.8.1)
- 优化:当逻辑分组表达式过于复杂(阈值可配置)或非法时,不执行查询,直接返回空数据(since v3.8.1)
- 优化:当指定的排序参数非法时,也不执行查询(之前是忽略排序),返回空数据(since v3.8.1)
- 优化:提升参数构建器性能,并将
Builder.toFieldName方法标记为过时,新增FieldFns工具类(since v3.8.1) - 优化:参数构建器新增
asc(boolean sure)与desc(boolean sure)方法(since v3.8.1) - 优化:参数构建器新增
putAll(Map<String, ?> params)方法(since v3.8.1) - 优化:当分页尺寸小于等于
0时,不执行列表查询(since v3.8.1) - 优化:标准化异常提示信息,全部英文化(since v3.8.1)
- 增强
- Bean Searcher Boot Starter
- 支持 用户配置一个
ParamResolver.Convertor的 Spring Bean 扩展参数值转换能力 - 移除
bean-searcher.sql.use-date-value-corrector配置项 - 升级
spring-boot->v2.6.9 - 新增
bean-searcher.params.filter.max-para-map-size配置项,默认150(since v3.8.1) - 新增
bean-searcher.params.group.max-expr-length配置项,默认50(since v3.8.1) - 新增
bean-searcher.params.pagination.max-allowed-offset配置项,默认20000(since v3.8.1) - 新增配置项校验:
bean-searcher.params.pagination.default-size的值不能比bean-searcher.params.pagination.max-allowed-size大,且都必须大于0(since v3.8.1) - 优化:标准化异常提示信息,全部英文化(since v3.8.1)
- 支持 用户配置一个
v3.7 的新特性(v3.7.1)
- Bean Searcher
- 新增
SqlServerDialect方言实现,支持 SqlServer 2012+ - 新增
OrLike运算符,参见:https://github.com/troyzhxu/bean-searcher/issues/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(..)方法,它们起始页码也受页码配置约束(破坏性更新) - 优化
参数构建器:新增orderBy(FieldFn<T, ?> fieldFn)、orderBy(String fieldName)、asc()与desc()方法(since v3.7.1) - 优化
参数构建器:使onlySelect(..)与selectExclude(..)方法支持传入形如age,name这样以,分隔的字符串参数(since v3.7.1) - 优化
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 方言 - 优化:添加自定义参数过滤器时,不覆盖内置的参数过滤器(since v3.7.1)
- 升级
spring-boot->v2.6.8
- 新增
v3.6 的新特性(v3.6.3)
- Bean Searcher
- 实体类
@SearchBean注解内的 SQL 片段支持:的 转义(\\:)语义; - 实体类
@SearchBean注解新增orderBy属性,可指定 默认排序字段; - 实体类
@SearchBean注解新增sortType属性,可指定 排序约束类型; - 实体类
@SearchBean注解指定groupBy属性时,支持 字段求和 查询 - 检索器 新增
ResultFilter机制,可让用户对检索结果统一做进一步的自定义处理 - 新增
PostgreSqlDialect方言实现,可用于 PostgreSql 数据库 - 重构
SqlResult,与 JDBC 解耦,便于使用其它 ORM 重写SqlExecutor - 重构
SqlInterceptor,它的intercept(..)方法新增FetchType参数 - 新增
B2MFieldConvertor,可让BFieldConvertor也适用于MapSearcher检索器 - 移除
DefaultSqlExecutor的addDataSource(..)方法,该方法在v3.0.0被标记为过时 - 移除
DateFormatFieldConvertor的addFormat(..)方法,该方法在v3.0.1被标记为过时 - 当使用
in/Include运算符时,输出警告,提示使用ct/Contain运算符 - 当使用
mv/MultiValue运算符时,输出警告,提示使用il/InList运算符 - 新增
BoolNumFieldConvertor字段转换器:支持Boolean -> Number方向的转换(since v3.6.1) - 优化
SearcherBuilder新增addResultFilter(..)方法(since v3.6.1)
- 实体类
- Bean Searcher Boot Starter
- 新增
bean-searcher.sql.default-mapping.inherit-type配置键,可在配置文件中指定默认的实体类继承类型,默认为ALL - 新增
bean-searcher.sql.default-mapping.sort-type配置键,可在配置文件中指定默认的排序约束类型,默认为ALLOW_PARAM - 支持
Spring Bean的方式为BeanSearcher与MapSearcher检索器添加ResultFilter过滤器 - 配置
bean-searcher.sql.dialect支持指定为PostgreSQL或PgSQL来使用 PostgreSql 方言 - 新增
bean-searcher.field-convertor.use-b2-m配置键,可在配置文件中指定是否启用B2MFieldConvertor, 默认false - 新增
bean-searcher.field-convertor.use-bool-num配置键,可自动配置BoolNumFieldConvertor,默认为true(since v3.6.1)
- 新增
v3.5 的新特性(v3.5.5)
- Bean Searcher
- 新增
GroupResolver、ExprParser等组件,实现参数分组与逻辑关系的表达、运算、智能化简与解析的能力 DefaultParamResolver新增gexprName、groupSeparator属性,用于指定组参数名的形式MapBuilder(参数构建器)新增group(String group)方法,用于构建字段参数组MapBuilder新增groupExpr(String expr)方法,用于指定参数组间的逻辑关系- 新增
TimeFieldConvertor,支持java.sql.Time与LocalTime之间的转换 - 注解
@DbField注解新增alias属性,支持手动指定字段别名(不指定则自动生成) - 参数构建器新增
field(FieldFn<T, ?> fieldFn, Collection<?> values)与field(String fieldName, Collection<?> values)方法,支持字段值集合参数(since v3.5.2)
- 新增
- 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 的新特性(v3.4.3)
- Bean Searcher
- 增强
MapBuilder.orderBy(..)方法,支持多次调用来指定按多个字段进行排序 - 新增
orderBy排序参数,可以类似orderBy=age:asc,time:desc的形式来指定多个排序字段 - 重构
DefaultSqlResolver、Dialect、SqlSnippet等相关类 - 移除
StringUtils.firstCharToUpperCase(..)方法 DefaultDbMapping新增ignoreFields属性,支持配置全局忽略的属性@SearchBean新增ignoreFields属性,可配置单个实体类应该被忽略的属性(可忽略父类中的属性)- 带嵌入参数的字段也能参与 过滤条件 与 字段统计(since v3.4.2)
- 增强
- Bean Searcher Boot Starter
- 新增
bean-searcher.sql.default-mapping.ignore-fields配置项,可在配置文件中指定全局忽略的属性 - 新增
bean-searcher.params.order-by配置项,可在配置文件中指定排序参数的参数名
- 新增
v3.3 的新特性(v3.3.3)
- Bean Searcher
- 新增
FieldOp接口,用户可用之扩展自己的字段运算符 - 新增
FieldOpPool类,用户可用之定制一套全新的字段运算符 - 内置新增
NotIn/ni与NotBetween/nb运算符 - 内置运算符
MultiValue/mv重命名为InList/il(原运算符仍可使用) DefaultDbMapping新增redundantSuffixes属性,可配置 在实体类自动映射表名时 统一去除类名中的冗余后缀(比如 VO、DTO 等)- 简化
Dialect: 移除truncateToDateStr,truncateToDateMinuteStr与truncateToDateSecondStr方法 MapBuilder新增op(Class<? extends FieldOp> op)方法(v3.3.1)- 优化
DateValueCorrector, 可配置支持的运算符(v3.3.1)
- 新增
- Bean Searcher Boot Starter
- 新增
bean-searcher.sql.default-mapping.redundant-suffixes配置项,可配置多个冗余后缀 - 支持直接声明一个
FieldOp类型的 Spring Bean 来扩展一个新的字段运算符 - 支持直接声明一个
FieldOpPool类型的 Spring Bean 来定制一套全新的字符运算符 - 新增
bean-searcher.sql.use-date-value-corrector配置项,可配置 是否使用DateValueCorrector(v3.3.1)
- 新增
v3.2 的新特性(v3.2.4)
Bean Searcher
- 重构
FieldConvertor:移除冗余参数targetType - 新增
EnumFieldConvertor:用来做枚举字段转换 - 实体类 SearchBean 支持继承(可继承 @SearchBean 注解与映射字段)
- 注解
@SearchBean新增inheritType属性,可控制继承规则 - 类
DefaultDbMapping新增defaultInheritType属性,可配置实体类的默认继承规则 - 实体类 SearchBean 的映射字段支持省略 Setter 方法
- 新增
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 - 使用 Searcher 类型注入检索器时,默认注入 MapSearcher,不再报错
- 提高兼容性,SpringBoot 最低版本支持到 v1.4+
- 新增
v3.1 的新特性(v3.1.4)
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类型的 Bean 来添加多个具名数据源 - 自动添加
spring-boot-starter-jdbc依赖 - 默认自动配置添加
NumberFieldConvertor - 默认自动配置添加
StrNumFieldConvertor - 默认自动配置添加
BoolFieldConvertor - 默认自动配置添加
DateFieldConvertor - 默认自动配置添加
DateFormatFieldConvertor - 支持配置文件指定表名与字段默认小写映射 或 大写映射
- 支持配置文件指定表名默认映射的前缀
- 支持配置
v3.0 的新特性(v3.0.5)
- 支持 热加载
- 支持 无注解
- 支持 Select 指定字段
- 支持 条件与运算符的约束
- 支持 参数过滤器
- 支持 字段转换器
- 支持 Sql 拦截器
- 支持 多数据源
- Spring Boot 自动配置功能 独立成 Bean Searcher Boot Starter` 项目中,Bean Searcher 核心包不再依赖 Spring
- 简化使用,不再需要启动操作,不再需要配置 SearchBean 包名路径(移除了 SearcherStarter 类)
V2 版本
该版本过于古老,具体已不可考。
V1 版本
该版本过于古老,具体已不可考。
