130 Star 1.3K Fork 261

Troy / bean-searcher

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
Clone or Download
CHANGELOG.md 40.35 KB
Copy Edit Raw Blame History
Troy authored 2024-06-11 10:17 . CHANGELOG.md

v4.3.0 @ 2024-06-10

✨ 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 @ 2024-04-25

🌻 Better

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

v4.2.8 @ 2024-04-24

🐛 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 @ 2024-01-16

🐛 Bug Fixes

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

🌻 Better

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

v4.2.6 @ 2024-01-08

✨ Features

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

🌻 Better

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

v4.2.5 @ 2023-12-13

🐛 Bug Fixes

🌻 Better

  • 升级 spring-boot -> 3.1.6
  • 升级 solon -> 2.6.2
  • 升级 slf4j -> 2.0.9
  • 升级 xjsonkit -> 1.4.3

v4.2.4 @ 2023-08-02

  • 为配置项 bean-searcher.params.convertor.date-target 添加默认值 SQL_DATE
  • 为配置项 bean-searcher.params.convertor.date-time-target 添加默认值 SQL_TIMESTAMP
  • 为配置项 bean-searcher.params.convertor.time-target 添加默认值 SQL_TIME

v4.2.3 @ 2023-08-02

✨ Features

  • Bean Searcher
    • 增强 BaseSearcher,新增 failOnParamError 属性,可配置当参数错误时是否向外抛出异常,默认 false
    • 增强 DateParamConvertor,支持 java.util.Date 子类的转换,并新增 target 属性,支持配置转换目标类型
    • 增强 DateTimeParamConvertor,支持 java.util.Date 子类的转换,并新增 target 属性,支持配置转换目标类型
    • 增强 TimeParamConvertor,新增 target 属性,支持配置转换目标类型
  • Bean Searcher Boot Starter
    • 新增配置项 bean-searcher.params.fail-on-error 指定参数错误时,是否抛出异常,默认 false
    • 新增配置项 bean-searcher.params.convertor.date-target
    • 新增配置项 bean-searcher.params.convertor.date-time-target
    • 新增配置项 bean-searcher.params.convertor.time-target
  • Bean Searcher Solon Plugin
    • 新增配置项 bean-searcher.params.fail-on-error 指定参数错误时,是否抛出异常,默认 false
    • 新增配置项 bean-searcher.params.convertor.date-target
    • 新增配置项 bean-searcher.params.convertor.date-time-target
    • 新增配置项 bean-searcher.params.convertor.time-target

🐛 Bug Fixes

🌻 Better

  • 升级 Solon -> v2.4.1
  • 升级 SpringBoot -> v3.1.2

v4.2.2 @ 2023-07-18

  • 修复 NumberParamConvertorEnumParamConvertor 冲突问题,NumberParamConvertor 不再处理枚举字段的转换
  • 增强 JsonFieldConvertor,支持将 非 String 类型(例如:PGobject)的 JSON 值转换为对象

v4.2.1 @ 2023-07-13

✨ Features

  • Bean Searcher
    • 增强:DateFieldConvertor 支持 Instant 类型的转换:https://gitee.com/troyzhxu/bean-searcher/pulls/9
    • 新增:EnumParamConvertor 对于枚举字段,可将 String/Emun 类型的参数自动转换为 枚举序号(默认)或 枚举名(由 @DbField.type 决定)
    • 优化:PreparedStatement.setObject(..) 方法报错时,仍然打印 SQL 日志
  • Bean Searcher Boot Starter
    • 自动配置 EnumParamConvertor
  • Bean Searcher Solon Plugin
    • 自动配置 EnumParamConvertor

🐛 Bug Fixes

  • Bean Searcher
    • 修复使用动态方言时,默认方言不能用的问题
  • Bean Searcher Boot Starter
    • 修复 动态方言 不能自动化配置的问题
  • Bean Searcher Solon Plugin
    • 修复 动态方言 不能自动化配置的问题

🌻 Better

  • 升级 Solon -> v2.3.8
  • 升级 SpringBoot -> v3.1.1

v4.2.0 @ 2023-05-08

✨ Features

  • Bean Searcher
    • 新增 DynamicDialectDynamicDialectSupport 类,用于支持动态方言
    • 重构 FieldParam.Value.isEmptyValue() 方法重命名为 FieldParam.Value.isEmpty()
    • 重构 AbstractSearcher 重命名为 BaseSearcher
    • 优化 DateTimeParamConvertor, 使其支持解析 yyyy-MM-dd HH:mm:ss.SSSyyyy-MMyyyy 格式的参数
    • 升级 slf4j -> 2.0.7
  • Bean Searcher Boot Starter
    • 新增配置项 bean-searcher.sql.dialect-dynamic, 表示是否启用动态方言,默认 false
    • 当启用动态数据源时,支持以 DataSourceDialect 注入 Bean 的方式添加数据源与方言的映射关系
    • 升级 springboot -> 3.0.6
  • Bean Searcher Solon Plugin
    • 新增配置项 bean-searcher.sql.dialect-dynamic, 表示是否启用动态方言,默认 false
    • 当启用动态数据源时,支持以 DataSourceDialect 注入 Bean 的方式添加数据源与方言的映射关系
    • 升级 solon -> 2.2.17

🐛 Bug Fixes

v4.1.2 & v4.0.2 @ 2023-03-09

🌻 Better

  • 提升 DefaultSqlExecutor 的执行性能

v4.1.1 @ 2023-03-06

🌻 Better

  • 优化 SearchBean 校验
  • 优化 DefaultDbMapping.BeanField 的访问权限

v4.1.0 @ 2023-03-03

✨ Features

  • Bean Searcher
    • 优化:@DbField.typeUNKNOWN 时,也支持使用 ParamConvertor 进行参数值转换
    • 重构:ParamResolver.Convertor -> FieldConvertor.ParamConvertor,且入参 DbType 类型修改为 FieldMeta 类型
    • 功能:注解 @DbField 新增 name 属性,可显式指定字段的参数名
    • 功能:注解 @DbField 新增 cluster 属性,可显式指定是否是聚合字段
    • 功能:注解 @DbField 新增 mapTo 属性,可显式指定映射到哪张表
    • 功能:注解 @SearchBean 新增 fields 属性,用于指定额外的动态条件字段
    • 优化:注解 @SearchBean.groupBy 使用拼接参数时,条件字段的生成逻辑
    • 优化:完善 groupBygroupExpr 同时使用时 wherehaving 的条件拆分逻辑
    • 优化:增强逻辑表达式的自动化简能力
  • Bean Searcher Boot Starter
    • 支持 GroupPairResolver 注入 Bean 的方式自定义
  • Bean Searcher Solon Plugin
    • 首发 Solon 插件(功能同 bean-searcher-boot-starter

👨🏻‍💻 Contributors

Thank you to all the contributors who worked on this release:

v4.0.1 @ 2023-02-25

✨ Features

  • Bean Searcher
    • 增强 JsonFieldConvertor 字段转换器,新增 failOnError 字段,可配置遇到某些值 JSON 解析异常时,是否自动捕获(即忽略)
  • Bean Searcher Boot Starter
    • 新增 bean-searcher.field-convertor.json-fail-on-error 配置项,表示是当 JSON 解析错误时,是否抛出异常,默认 true

🐛 Bug Fixes

v4.0.0 @ 2023-01-31

✨ Features

  • 重构 cn.zhxu.bs.param.Operator -> cn.zhxu.bs.FieldOps

🐛 Bug Fixes

  • 修正 MapUtils.of(..)static 方法。

v4.0.0.alpha3 @ 2023-01-29

✨ 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,使支持 BigDecimalInteger 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 @ 2022-12-02

✨ 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 @ 2022-12-01

✨ Features

  • 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
  • Bean Searcher Boot Starter
    • 支持 Spring Boot 3

v3.8.2 @ 2022-09-16

v3.8.1 @ 2022-08-23

✨ Features

  • 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 @ 2022-07-23

✨ Features

  • Bean Searcher
    • 增强 @SearchBean 注解:新增 having 属性,用于指定分组条件
    • 增强 @DbField 注解:新增 type 属性,允许用户手动指定该属性对应的数据库字段类型
    • 增强 ParamResolver: 新增 Convertor 参数转换器,可对检索参数的值类型转换为数据库字段匹配的类型(更好的兼容 Oracle、PgSQL 等数据库)
    • 新增 BoolParamConvertorNumberParamConvertorDateParamConvertorTimeParamConvertorDateTimeParamConvertor 参数转换器
    • 新增 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,已被 DateParamConvertorDateTimeParamConvertor 替代
    • 移除 NullValueFilterBoolValueFilter(已被 BoolParamConvertor 替代)
    • 优化 分组动态查询条件生成机制:https://github.com/troyzhxu/bean-searcher/issues/56
    • 优化 当 @SearchBean.tables 的值是单表时,则省略注解的字段属性也自动映射
    • 优化 异常提示信息
  • Bean Searcher Boot Starter
    • 支持 用户配置一个 ParamResolver.Convertor 的 Spring Bean 扩展参数值转换能力
    • 移除 bean-searcher.sql.use-date-value-corrector 配置项
    • 升级 spring-boot -> v2.6.9

v3.7.1 @ 2022-06-22

🌻 Better

  • Bean Searcher
    • 优化 参数构建器:新增 orderBy(FieldFn<T, ?> fieldFn)orderBy(String fieldName)asc()desc() 方法
    • 优化 参数构建器:使 onlySelect(..)selectExclude(..) 方法支持传入形如 age,name 这样以 , 分隔的字符串参数
  • Bean Searcher Boot Starter
    • 优化:添加自定义参数过滤器时,不覆盖内置的参数过滤器

v3.7.0 @ 2022-06-04

✨ Features

  • 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(..) 方法,它们起始页码也受页码配置约束(破坏性更新
    • 优化 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.dialectSqlServer 来使用 Sql Server 方言
    • 升级 spring-boot -> v2.6.8

v3.6.3 v3.5.5 @ 2022-05-11

🐛 Bug Fixes

v3.6.2 @ 2022-05-11

🌻 Better

  • Bean Searcher Boot Starter: 升级 spring-boot -> 2.6.7

v3.5.4 @ 2022-05-11

🌻 Better

  • Bean Searcher Boot Starter: 升级 spring-boot -> 2.6.7

🐛 Bug Fixes

  • 修复:当实体类 @SearchBean 注解内指定 groupBy 属性时,不支持 字段求和 的问题
  • 修复 MapUtils.builder(..)page(..)limit(..) 方法不受 max-allowed-size 配置约束的问题

v3.6.1 @ 2022-05-09

✨ Features

  • Bean Searcher
    • 新增 BoolNumFieldConvertor 字段转换器:支持 Boolean -> Number 方向的转换
    • 优化 SearcherBuilder 新增 addResultFilter(..) 方法
  • Bean Searcher Boot Starter
    • 新增 bean-searcher.field-convertor.use-bool-num 配置键,可自动配置 BoolNumFieldConvertor,默认为 true

🐛 Bug Fixes

  • 修复 MapUtils.builder(..)page(..)limit(..) 方法不受 max-allowed-size 配置约束的问题

v3.6.0 @ 2022-04-21

✨ Features

  • Bean Searcher
    • 实体类 @SearchBean 注解内的 SQL 片段支持 : 的转义处理:\\:
    • 实体类 @SearchBean 注解新增 orderBy 属性,可指定默认的排序字段
    • 实体类 @SearchBean 注解新增 sortType 属性,可指定排序约束类型
    • 实体类 @SearchBean 注解指定 groupBy 属性时,支持 字段求和 查询
    • 检索器 新增 ResultFilter 机制,可让用户对检索结果统一做进一步的自定义处理
    • 新增 PostgreSqlDialect 方言实现,可用于 PostgreSql 数据库
    • 重构 SqlResult,与 JDBC 解耦,便于使用其它 ORM 重写 SqlExecutor
    • 重构 SqlInterceptor,它的 intercept(..) 方法新增 FetchType 参数
    • 新增 B2MFieldConvertor,可让 BFieldConvertor 也适用于 MapSearcher 检索器
    • 移除 DefaultSqlExecutoraddDataSource(..) 方法,该方法在 v3.0.0 被标记为过时
    • 移除 DateFormatFieldConvertoraddFormat(..) 方法,该方法在 v3.0.1 被标记为过时
    • 当使用 in/Include 运算符时,输出警告,提示使用 ct/Contain 运算符
    • 当使用 mv/MultiValue 运算符时,输出警告,提示使用 il/InList 运算符
  • Bean Searcher Boot Starter
    • 新增 bean-searcher.sql.default-mapping.inherit-type 配置键,可在配置文件中指定默认的实体类继承类型,默认为 ALL
    • 新增 bean-searcher.sql.default-mapping.sort-type 配置键,可在配置文件中指定默认的排序约束类型,默认为 ALLOW_PARAM
    • 支持 Spring Bean 的方式为 BeanSearcherMapSearcher 检索器添加 ResultFilter 过滤器
    • 配置 bean-searcher.sql.dialect 支持指定为 PostgreSQLPgSQL 来使用 PostgreSql 方言
    • 新增 bean-searcher.field-convertor.use-b2-m 配置键,可在配置文件中指定是否启用 B2MFieldConvertor, 默认 false

v3.5.3 @ 2022-04-06

🌻 Better

  • Bean Searcher Boot Starter: 升级 spring-boot -> 2.6.6

🐛 Bug Fixes

v3.5.2 @ 2022-03-17

✨ Features

  • Bean Searcher: 参数构建器新增 field(FieldFn<T, ?> fieldFn, Collection<?> values)field(String fieldName, Collection<?> values) 方法,支持字段值集合参数

🌻 Better

  • Bean Searcher Boot Starter: 升级 spring-boot -> 2.6.4

🐛 Bug Fixes

  • 修复当排序字段不在 SELECT 子句中时 ORDER BY 子句仍然会使用该字段的别名的问题

v3.5.1 @ 2022-02-24

🌻 Better

  • 强化对复杂逻辑表达式的简化能力
  • 升级 slf4j-api -> 1.7.36

v3.5.0 @ 2022-02-23

✨ Features

  • Bean Searcher
    • 新增 GroupResolverExprParser 等组件,实现参数分组与逻辑关系的表达、运算、智能化简与解析的能力
    • DefaultParamResolver 新增 gexprNamegroupSeparator 属性,用于指定组参数名的形式
    • MapBuilder(参数构建器)新增 group(String group) 方法,用于构建字段参数组
    • MapBuilder 新增 groupExpr(String expr) 方法,用于指定参数组间的逻辑关系
    • 新增 TimeFieldConvertor,支持 java.sql.TimeLocalTime 之间的转换
    • 注解 @DbField 注解新增 alias 属性,支持手动指定字段别名(不指定则自动生成)
  • 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.3 @ 2022-02-21

🐛 Bug Fixes

  • 修复 StartWith 运算符不后模糊匹配的问题(该 BUG 在 v3.4.2 中滋生)

v3.4.2 @ 2022-02-18

🌻 Better

  • 带嵌入参数的字段也能参与过滤条件
  • 带嵌入参数的字段也能参与字段统计

v3.4.1 @ 2022-02-11

🌻 Better

  • Bean Searcher
    • 优化 SQL 生成逻辑:当 @SearchBean 注解的 joinCond 属性只有一个拼接参数 且 该参数值为空时,则使其不参与 where 子句

🐛 Bug Fixes

  • 修复 DateFieldConvertor 无法将 java.sql.Date 转换为 LocalDate / LocalDateTime 的问题
  • 修复 DateFieldConvertor 转换 LocalDate / LocalDateTime 时会产生时区偏差的问题
  • 修复 DateFormatFieldConvertor 无法格式化 java.sql.Date / java.sql.Time 的问题

v3.3.3 @ 2022-02-11

🌻 Better

  • Bean Searcher
    • bump slf4j-api from 1.7.32 to 1.7.35
    • 优化注解声明
    • 优化异常信息
  • Bean Searcher Boot Starter
    • bump spring-boot from 2.6.2 to 2.6.3
    • 去掉无用的配置提示

🐛 Bug Fixes

  • 修复 DateFieldConvertor 无法将 java.sql.Date 转换为 LocalDate / LocalDateTime 的问题
  • 修复 DateFieldConvertor 转换 LocalDate / LocalDateTime 时会产生时区偏差的问题
  • 修复 DateFormatFieldConvertor 无法格式化 java.sql.Date / java.sql.Time 的问题

v3.2.4 @ 2022-02-11

🌻 Better

  • Bean Searcher Boot Starter
    • 去掉无用的配置提示

🐛 Bug Fixes

  • 修复 DateFieldConvertor 无法将 java.sql.Date 转换为 LocalDate / LocalDateTime 的问题
  • 修复 DateFieldConvertor 转换 LocalDate / LocalDateTime 时会产生时区偏差的问题
  • 修复 DateFormatFieldConvertor 无法格式化 java.sql.Date / java.sql.Time 的问题

v3.1.4 @ 2022-02-11

🌻 Better

  • Bean Searcher
    • 增强 BoolFieldConvertor,使支持 Boolean -> boolean 方向的转换
  • Bean Searcher Boot Starter
    • 不再强制依赖 DataSource, 支持 Grails 项目
    • 去掉无用的配置提示

🐛 Bug Fixes

  • 修复 DateFieldConvertor 无法将 java.sql.Date 转换为 LocalDate / LocalDateTime 的问题
  • 修复 DateFieldConvertor 转换 LocalDate / LocalDateTime 时会产生时区偏差的问题
  • 修复 DateFormatFieldConvertor 无法格式化 java.sql.Date / java.sql.Time 的问题

v3.4.0 @ 2022-02-09

✨ Features

  • Bean Searcher
    • 增强 MapBuilder.orderBy(..) 方法,支持多次调用来指定按多个字段进行排序
    • 新增 orderBy 排序参数,可以类似 orderBy=age:asc,time:desc 的形式来指定多个排序字段
    • 重构 DefaultSqlResolverDialectSqlSnippet 等相关类
    • 移除 StringUtils.firstCharToUpperCase(..) 方法
    • DefaultDbMapping 新增 ignoreFields 属性,支持配置全局忽略的属性
    • @SearchBean 新增 ignoreFields 属性,可配置单个实体类应该被忽略的属性(可忽略父类中的属性)
  • Bean Searcher Boot Starter
    • 新增 bean-searcher.sql.default-mapping.ignore-fields 配置项,可在配置文件中指定全局忽略的属性
    • 新增 bean-searcher.params.order-by 配置项,可在配置文件中指定排序参数的参数名

🌻 Better

  • Bean Searcher
    • 优化异常信息
    • 优化注解声明
    • bump slf4j-api from 1.7.32 to 1.7.35
  • Bean Searcher Boot Starter
    • 优化配置提示信息
    • bump spring-boot from 2.6.2 to 2.6.3

v3.3.2 @ 2022-02-07

🌻 Better

  • Bean Searcher
    • 增强 BoolFieldConvertor,使支持 Boolean -> boolean 方向的转换

v3.2.3 @ 2022-01-30

🌻 Better

  • Bean Searcher
    • 增强 BoolFieldConvertor,使支持 Boolean -> boolean 方向的转换
  • Bean Searcher Boot Starter
    • 优化 BeanSearcherAutoConfiguration 不再强制依赖 DataSource
    • 支持在 Grails 项目中使用 bean-searcher-boot-starter 依赖

v3.3.1 @ 2022-01-21

✨ Features

  • Bean Searcher
    • MapBuilder 新增 op(Class<? extends FieldOp> op) 方法
    • 优化 DateValueCorrector, 可配置支持的运算符
  • Bean Searcher Boot Starter
    • 新增 bean-searcher.sql.use-date-value-corrector 配置项,可配置 是否使用 DateValueCorrector
    • 支持在 Grails 项目中使用 bean-searcher-boot-starter 依赖

🌻 Better

  • Bean Searcher
    • 优化字段运算符的匹配逻辑:使用严格模式
    • 优化 Operator 常量,使其可以直接作为 @DbField.onlyOn 的值(兼容以前版本,便于升级)
  • Bean Searcher Boot Starter
    • 优化自动配置机制,支持无 DataSource 自动配置

🐛 Bug Fixes

  • 修复当用户对同一个运算符 new 很多次时会导致 FieldOpPool 膨胀的问题

v3.2.2 @ 2021-12-20

🌻 Better

  • Bean Searcher
    • 优化 DateValueCorrector,使其支持 LocalDateTime 类型字段
  • Bean Searcher Boot Starter
    • 优化自动配置机制,使其不依赖于 DataSourceAutoConfiguration,只要提供了 DataSource 就能自动配置
  • Change LICENSE to Apache-2.0

v3.3.0 @ 2022-01-19

✨ Features

  • Bean Searcher
    • 新增 FieldOp 接口,用户可用之扩展自己的字段运算符
    • 新增 FieldOpPool 类,用户可用之定制一套全新的字段运算符
    • 内置新增 NotIn / niNotBetween / nb 运算符
    • 内置运算符 MultiValue / mv 重命名为 InList / il (原运算符仍可使用)
    • DefaultDbMapping 新增 redundantSuffixes 属性,可配置 在实体类自动映射表名时 统一去除类名中的冗余后缀(比如 VO、DTO 等)
    • 简化 Dialect: 移除 truncateToDateStrtruncateToDateMinuteStrtruncateToDateSecondStr 方法
  • Bean Searcher Boot Starter
    • 新增 bean-searcher.sql.default-mapping.redundant-suffixes 配置项,可配置多个冗余后缀
    • 支持直接声明一个 FieldOp 类型的 Spring Bean 来扩展一个新的字段运算符
    • 支持直接声明一个 FieldOpPool 类型的 Spring Bean 来定制一套全新的字符运算符
  • Change LICENSE to Apache-2.0

v3.2.1 @ 2021-12-18

🌻 Better

  • Bean Searcher
    • @DbIgnore 注解也自动忽略实体类中的 statictransient 属性
    • 实体类支持子类重写父类中已存在的属性

🐛 Bug Fixes

v3.1.3 @ 2021-12-14

🌻 Better

  • Bean Searcher
    • @DbIgnore 也自动忽略实体类中的静态字段
  • Bean Searcher Boot Starter
    • 使用 Searcher 类型注入检索器时,默认注入 MapSearcher,不再报错
    • 提高兼容性,SpringBoot 最低版本支持到 v1.4+

v3.0.5 @ 2021-12-12

🌻 Better

  • Bean Searcher
    • @DbIgnore 也自动忽略实体类中的静态字段
  • Bean Searcher Boot Starter
    • 使用 Searcher 类型注入检索器时,默认注入 MapSearcher,不再报错
    • 提高兼容性,SpringBoot 最低版本支持到 v1.4+

v3.2.0 @ 2021-12-08

✨ Features

  • Bean Searcher
    • 重构 FieldConvertor:移除冗余参数 targetType
    • 新增 EnumFieldConvertor:用来做枚举字段转换
    • 实体类 SearchBean 支持继承(可继承 @SearchBean 注解与映射字段)
    • 注解 @SearchBean 新增 inheritType 属性,可控制继承规则
    • DefaultDbMapping 新增 defaultInheritType 属性,可配置实体类的默认继承规则
    • 实体类 SearchBean 的映射字段支持省略 Setter 方法
    • 新增 ctContain)运算符,用于取代 inInclude)运算符(使用 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

🌻 Better

  • Bean Searcher Boot Starter
    • 使用 Searcher 类型注入检索器时,默认注入 MapSearcher,不再报错
    • 提高兼容性,SpringBoot 最低版本支持到 v1.4+

v3.1.2 & v3.0.4 @ 2021-12-02

🌻 Better

  • 优化 JDBC 调用,兼容 sharding-jdbc
  • 优化 Operator.from(Object) 方法
  • 优化 MapBuilder 工具类,增加非空校验

v3.1.1 & v3.0.3 @ 2021-12-01

✨ Features

  • 优化 DefaultSqlResolver 的方法的权限修饰符,便于子类复用

🐛 Bug Fixes

  • 优化别名生成规则,兼容 Oracle 数据库

v3.1.0 @ 2021-11-15

✨ Features

  • Bean Searcher

    • 新增 BFieldConvertorMFieldConvertor 字段转换器子接口,提高字段转换效能
    • 新增 DateFieldConvertor,支持 DateLocalDateTime 类型之间的转换
    • 增强 DateFormatFieldConvertor,使支持 Temporal 及其子类的对象的格式化
    • 增强 DateFormatFieldConvertor,新增:setZoneId(ZoneId) 方法,可配置时区
    • 增强 DefaultSqlExecutor,新增 setTransactionIsolation(int level) 方法,可配置隔离级别
    • 增强 DbMapping,使其完全接管数据映射的解析工作,并将 DefaultDbMappingDefaultMetaResolver 的内部独立出来
    • 增强 DefaultDbMapping,使支持配置注解缺省时的表名前缀与是否开启大写映射,即支持默认映射大写的表名与列名
  • Bean Searcher Boot Starter

    • 支持配置 NamedDataSource 类型的 Bean 来添加多个具名数据源
    • 自动添加 spring-boot-starter-jdbc 依赖
    • 默认自动配置添加 NumberFieldConvertor
    • 默认自动配置添加 StrNumFieldConvertor
    • 默认自动配置添加 BoolFieldConvertor
    • 默认自动配置添加 DateFieldConvertor
    • 默认自动配置添加 DateFormatFieldConvertor
    • 支持配置文件指定表名与字段默认小写映射 或 大写映射
    • 支持配置文件指定表名默认映射的前缀

v3.0.2 @ 2021-11-10

🐛 Bug Fixes

  • 修复:在 v3.0.0 中,单独使用 searchCountsearchSum 方法时,获取 SQL 结果会出错的问题

v3.0.1 @ 2021-11-05

✨ Features

  • DateFormatFieldConvertor 新增 setFormat 方法

🐛 Bug Fixes

  • 修复:在 v3.0.0 中,再没有指定 @SearchBean 注解的 joinCond 属性时,带条件的 SQL 生成中 where 后少一个 左括号的问题

v3.0.0 重大更新 @ 2021-11-04

✨ Features

  • 支持 热加载
  • 支持 无注解
  • 支持 Select 指定字段
  • 支持 条件与运算符的约束
  • 支持 参数过滤器
  • 支持 字段转换器
  • 支持 Sql 拦截器
  • 支持 多数据源
  • 支持 JDK 9+

Bean Searcher

  • 精简 Searcher 接口,移除一些无用的方法(最后一个形参为 prefix 的检索方法被移除)
  • 架构优化:SearchBean 支持热加载,在配置了热加载的应用开发中,SearchBean 修改后,无需重启即可生效
  • 移除 SearchPluginSpringSearcher 辅助类,因为 v3.0 的 Bean Searcher 的使用比借助辅助类更加容易
  • 精简 SearchResult 类,移除没有必要的字段,只保留 totalCountdataListsummaries 字段
  • 新增 Searcher 的子接口:MapSearcherBeanSearcher 与其相关实现,MapSearcher 中的检索方法返回的数据类型为 Map, BeanSearcher 中的检索方法返回的数据类型为泛型的 Search Bean
  • 重构 SearcherBuilder 构建器, 使其更容易构建出一个 MapSearcherBeanSearcher 实例
  • 注解 @SearchBeangroupBy 属性,支持嵌入参数,嵌入参数未传入时,使用空字符串(以前使用 "null" 字符串)
  • 抽象 BeanReflectorFieldConvertor 接口,使得 SearchBean 对象的反射机制更加解耦,更容易扩展与自定义
  • 新增 NumberFieldConvertorStrNumFieldConvertorBoolFieldConvertorDateFormatFieldConvertor 四个字段转换器实现,用户可以选择使用
  • 新增 DbMapping 数据库映射接口,并提供基于下划线风格的映射实现,使得简单应用场景下,用户可以省略 @SearchBean@DbField 注解
  • 注解 @SearchBean 新增 dataSource 属性,用于指定该 SearchBean 从哪个数据源检索
  • 注解 @SearchBean 新增 autoMapTo 属性,用于指定缺省 @DbField 注解的字段自动映射到那张表
  • 新增 @DbIgnore 注解,用于指定 忽略某些字段,即添加该注解的字段不会被映射到数据库
  • 注解 @DbField 新增 conditionalonlyOn 属性,使得用户可以控制该字段是否可以用作检索条件,以及当可作检索条件时支持哪些字段运算符
  • 新增 ParamAware 接口,SearchBean 实现该接口时,可在 afterAssembly(Map<String, Object> paraMap) 方法里拿到原始检索参数
  • 新增 onlySelect 与 selectExclude 参数(参数名可自定义),可用于指定只 Select 哪些字段,或者排除哪些字段
  • 新增 SqlInterceptor 接口,实现 SQL 拦截器功能

Bean Searcher Boot Starter

  • 简化使用,不再需要启动操作,不再需要配置 SearchBean 包名路径(移除了 SearcherStarter 类)
  • Spring Boot 自动配置功能 独立到 Bean Searcher Boot Starter` 项目中,Bean Searcher 项目不再依赖 Spring

JDK

  • 支持 JDK8+
  • 兼容 JDK9+ 的模块引入机制
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/troyzhxu/bean-searcher.git
git@gitee.com:troyzhxu/bean-searcher.git
troyzhxu
bean-searcher
bean-searcher
dev

Search

344bd9b3 5694891 D2dac590 5694891