Skip to content

Releases: troyzhxu/bean-searcher

v4.0.1

15 Feb 03:41
Compare
Choose a tag to compare

✨ Features

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

🐛 Bug Fixes

  • Bean Searcher Boot Starter
    • 修复 未添加 xjsonkit 相关依赖时,会启动报错的问题:#70

v4.0.0

31 Jan 08:55
Compare
Choose a tag to compare

✨ Features

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

🐛 Bug Fixes

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

v4.0.0.alpha3

29 Jan 09:50
Compare
Choose a tag to compare

✨ 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

04 Dec 04:59
Compare
Choose a tag to compare

✨ 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

02 Dec 05:55
Compare
Choose a tag to compare
  • 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

08 Oct 14:17
Compare
Choose a tag to compare
  • 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

03 Jul 16:18
Compare
Choose a tag to compare

✨ Features

  • Bean Searcher
    • 增强 @SearchBean 注解:新增 having 属性,用于指定分组条件
    • 增强 @DbField 注解:新增 type 属性,允许用户手动指定该属性对应的数据库字段类型
    • 增强 ParamResolver: 新增 Convertor 参数转换器,可对检索参数的值类型转换为数据库字段匹配的类型(更好的兼容 Oracle、PgSQL 等数据库): #53
    • 新增 BoolParamConvertorNumberParamConvertorDateParamConvertorTimeParamConvertorDateTimeParamConvertor 参数转换器
    • 新增 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,已被 DateParamConvertorDateTimeParamConvertor 替代
    • 移除 NullValueFilterBoolValueFilter(已被 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

22 Jun 14:21
Compare
Choose a tag to compare

✨ Better

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

v3.7.0

04 Jun 14:30
Compare
Choose a tag to compare

✨ 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.dialectSqlServer 来使用 Sql Server 方言
    • 升级 spring-boot -> v2.6.8

v3.6.3

11 May 13:21
Compare
Choose a tag to compare

🐛 Bug Fixes

  • 修复 JDK8 上当实体类有 LocalDate 类型的字段时会报 NoSuchMethodError 的问题: #43