Skip to content

Releases: troyzhxu/bean-searcher

v4.3.5

06 Nov 02:10
Compare
Choose a tag to compare

✨ Features

  • 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(新增)
      • 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

      以上是 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] --- 系列格式(新增)
  • Bean Searcher Solon Plugin

    • 优化配置项,支持在 IDEA 内配置提示项功能(前提是安装 Solon 插件)

🐛 Bug Fixes

v4.3.4

23 Oct 02:40
Compare
Choose a tag to compare

✨ Features

  • Bean Searcher

    var params = MapUtils.builder()
            // ifTrue 若真,返回 List, 否则返回 单值,类型不固定,v4.3.4 开始兼容这种写法
            .field(User::getId, ifTrue ? List.of(1,2,3) : 4)
            .build();
    var params = MapUtils.builder()
            // ifTrue 若真,返回 原生数组, 否则返回 单值,类型不固定,v4.3.4 开始兼容这种写法
            .field(User::getId, ifTrue ? new int[] {1,2,3} : 4)
            .build();
    var params = MapUtils.builder()
            // ifTrue 若真,返回 对象数组, 否则返回 单值,类型不固定,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

08 Oct 07:13
Compare
Choose a tag to compare

✨ Features

  • 优化:BeanMeta 可保持检索实体类中的字段声明顺序(即条件生成顺序)#105
  • 优化:DefaultParamResolver 提升 extractFieldParams(..) 方法的权限,可供子类重写,便于用户自定义
  • 优化:DefaultMetaResolver: 抽取 createBeanMeta(..) 方法,便于用户自定义 BeanMeta 子类

🐛 Bug Fixes

  • 修复:DefaultGroupResolver 的默认 LRUCache 缓存没有遵循访问顺序规则的问题

🌻 Better

  • 升级 Solon -> 2.9.4

v4.3.2

09 Sep 01:10
Compare
Choose a tag to compare

✨ Features

  • Bean Searcher
    • 增强 DateTimeParamConvertor: 使支持整型的时间戳参数值
  • Bean Searcher Boot Starter
    • 新增 SpringSqlExecutor: 支持 Spring 事务的 Sql 执行器,且默认使用
    • 新增配置项:bean-searcher.params.convertor.zone-id: 可配置 DateTimeParamConvertor 使用的时区
  • Bean Searcher Solon Plugin
    • 新增 SolonSqlExecutor: 支持 Solon 事务的 Sql 执行器,且默认使用
    • 新增配置项:bean-searcher.params.convertor.zone-id: 可配置 DateTimeParamConvertor 使用的时区

📚 Document

https://bs.zhxu.cn/

v4.3.1

24 Aug 07:33
Compare
Choose a tag to compare

🌻 Better

  • SearchResult 新增 empty() 方法
  • RpcNames 新增 newNames() 替代原来的 newConfig() 方法
  • 参数构建器的 buildForRpc() 方法,提升一点性能
  • 依赖升级:junit -> 5.10.3, slf4j -> 2.0.16, solon -> 2.9.0

🐛 Bug Fixes

  • 修复 JsonFieldConvertor 在转换形如 List<A<B>> 的复杂 List 泛型时会报错的问题: #99

v4.3.0

11 Jun 02:18
Compare
Choose a tag to compare

✨ Features

  • 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() 方法
  • 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 组件
  • 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 组件

🌻 Better

  • 升级 Junit -> 5.10.2
  • 升级 Solon -> 2.8.3

v4.2.9

25 Apr 03:36
Compare
Choose a tag to compare

🌻 Better

  • 增强 JsonFieldConvertor:兼容 DB 返回的 byte[] 类型的字段(例如 H2 的 JSON 字段)

v4.2.8

24 Apr 04:16
Compare
Choose a tag to compare

🐛 Bug Fixes

  • 修复在 PgSQL 数据库上,使用字段参数动态生成 having 条件并且该条件字段在 select 列表中时,生成的 having 条件含有别名的问题(这个语法特性在 MySQL 上支持,PgSQL 上不支持)。

🌻 Better

  • 优化 ListFieldConvertor 的字段匹配条件:未指定 dbTypeList 字段
  • 优化 bean-searcher-solon-plugin 组件支持零配置使用
  • 升级 solon -> 2.7.5
  • 升级 spring-boot -> 2.7.18
  • 升级 slf4j-api -> 2.0.13
  • 兼容 JDK 8

v4.2.7

16 Jan 05:24
Compare
Choose a tag to compare

🐛 Bug Fixes

  • 修复:使用 @SearchBean.fields 时,某些情况下会出现 NullPointerException 的问题

🌻 Better

  • 升级 slf4j-api -> 2.0.11
  • 升级 solon -> 2.6.5

v4.2.6

09 Jan 02:56
Compare
Choose a tag to compare

✨ Features

  • 增强 JsonFieldConvertor:使支持复杂 JSON 数组到泛型 List<T> 的字段转换

🌻 Better

  • 升级 solon -> 2.6.4
  • 升级 spring-boot -> 3.2.1
  • 升级 slf4j-api -> 2.0.10