简介
很多系统都有列表检索(如:订单管理,用户管理)这样的需求,而每一个列表页所需展示的数据往往会横跨多张数据库表(比如订单管理页表格里的订单号列来自订单表,用户名列来自用户表),此时我们的后端所建的 域类(或实体类,与数据库表想关联的那个类)与页面所需展示的数据并不能形成一一对应关系。 因此,VO(View Object) 产生了。它介于页面数据与域类之间,页面展示的数据不再需要与后端的域类一一对应,而只需要与 VO 一一对应就可以了,而 VO 也不再需要与数据表做映射,业务代码里拼装就可以了。但此时,后端的逻辑又复杂了一点,因为我们不仅需要解析前端传来的参数,还要处理 域类(或者复杂的 SQL 查询语句)与 VO 之间的转换关系。而 Bean Searcher 认为,VO 不再需要与域类扯上关系,一个 VO 既可以与页面数据一一对应,又可以直接映射到数据库里的多张数据表(域类不同,它只映射到一张表),而这种新的 VO 称为 Search Bean。 在 Search Bean 出现之前,前端传来的检索条件都是需要业务代码解析处理的(因为普通的 VO 无法与数据库直接映射),并且查询结果也需要再做一次 VO 转换。而 Search Bean 出现之后,条件可以用 Search Bean 里的字段和参数直接表达,并且直接映射成数据库的查询语句。 所以,后端检索接口里的代码只需要收集页面的检索参数即可,余下的就全部交给 Bean Searcher 处理了,并且它返回的 SearchBean 就是前端所需的 VO 对象,也不需要再多做转换了。 而这,就是 Bean Searcher 之所以能极大提高研发生产力的原因!
v3.7.0 更新内容
✨ Features
- Bean Searcher
- 新增
SqlServerDialect
方言实现,支持 SqlServer 2012+ - 新增
OrLike
运算符,参见:https://github.com/ejlchina/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.dialect
为SqlServer
来使用 Sql Server 方言 - 升级
spring-boot
->v2.6.8
- 新增
你还在问 Bean Searcher 是什么?
- 快来看它如何让你的效率提升 100 倍:https://juejin.cn/post/7027733039299952676
- 快来看它为何与被 MybatisPlus 直接的区别:https://juejin.cn/post/7092411551507808264
- 超详细文档:https://bs.zhxu.cn/
如果觉得不错点个 STAR 吧 ^_^:
- Github: https://github.com/troyzhxu/bean-searcher
- Gitee: https://gitee.com/troyzhxu/bean-searcher
还没有评论,来说两句吧...