当前位置:网站首页 > Java教程 > 正文

bs java 教程



如果您还不了解 Bean Searcher 适合在在哪些场景使用的话,请先阅读 介绍 > Bean Searcher 章节。

当在项目中成功集成后,接下来便可以在我们的业务代码(Controller 或 Service)中拿到检索器实例了。

Spring 或 Grails 项目都可以直接注入(Grails 项目中不需要使用 注解):

其它项目,可以把在项目启动时构建出来的检索器直接传进来,或使用自己的注入方式进行注入。

拿到检索器后,接着我们看一下 与 检索器都提供了哪些方法:

  • 查询指定条件下的数据 总条数
  • 查询指定条件下的 某字段统计值
  • 查询指定条件下的 多字段统计值

检索参数 是一个条件集合,包含字段过滤、分页、排序 等参数

  • 分页 查询指定条件下数据 列表总条数
  • 同上 + 多字段 统计
  • 查询指定条件下的 第一条 数据
  • 分页 查询指定条件下数据 列表
  • 查询指定条件下 所有 数据 列表

以上方法的查询出的单条数据都以 对象呈现

  • 分页 查询指定条件下数据 列表总条数
  • 同上 + 多字段 统计
  • 查询指定条件下的 第一条 数据
  • 分页 查询指定条件下数据 列表
  • 查询指定条件下 所有 数据 列表

以上方法的查询出的单条数据都以泛型 对象呈现

完整的接口定义,可查阅:Searcher、MapSearcher 与 、BeanSearcher 。

在 Bean Searcher 的世界里,与数据库有映射关系的实体类称为 SearchBean(一个 SearchBean 可以映射一张表,也可以映射多张表),例如,您的项目中可能已经存在这样的一个实体类了:

相比 v2.x, Bean Searcher v3.x 的实体类可以省略注解,也可以自定义识别其它框架的注解。

在注解缺省的情况下,Bean Searcher 认为它是一个单表实体类(即只映射到数据库中的一张表,联表实体类 的例子 请参考 实体类 > 多表关联 章节。

有了实体类后,接下来我们便用 的 方法来体验一下如何 只用一行代码 实现一个检索接口,代码如下:

你还可以配置 自动接收请求参数, 然后,你的代码就可以进一步简化:

上面的代码,实现了一个 接口,它的方法体里真的只有一行代码,但这个接口能支持哪些请求参数呢?不同的请求参数又能输出怎样的结果呢,接下来让我们来简单列举一下:

  • GET /user/index
  • 返回结果:
  • GET /user/index? page=2 & size=10
  • 返回结果:结构同 (1)(只是每页 10 条,返回第 2 页)
  • GET /user/index? sort=age & order=desc
  • 返回结果:结构同 (1)(只是 dataList 数据列表以 age 字段降序输出)
  • GET /user/index? onlySelect=id,name
  • GET /user/index? selectExclude=age
  • 返回结果:( dataList 数据列表只含 id 与 name 字段)
  • GET /user/index? age=20
  • GET /user/index? age=20 & age-op=eq
  • 返回结果:结构同 (1)(但只返回 age=20 的数据)
  • GET /user/index? age=20 & age-op=ne
  • 返回结果:结构同 (1)(但只返回 age != 20 的数据, 是 的缩写)
  • GET /user/index? age=20 & age-op=ge
  • 返回结果:结构同 (1)(但只返回 age >= 20 的数据, 是 的缩写)
  • GET /user/index? age=20 & age-op=le
  • 返回结果:结构同 (1)(但只返回 age <= 20 的数据, 是 的缩写)
  • GET /user/index? age=20 & age-op=gt
  • 返回结果:结构同 (1)(但只返回 age > 20 的数据, 是 的缩写)
  • GET /user/index? age=20 & age-op=lt
  • 返回结果:结构同 (1)(但只返回 age < 20 的数据, 是 的缩写)
  • GET /user/index? age-0=20 & age-1=30 & age-op=bt
  • 返回结果:结构同 (1)(但只返回 20 <= age <= 30 的数据, 是 的缩写)
  • GET /user/index? age-0=20 & age-1=30 & age-2=40 & age-op=il
  • 返回结果:结构同 (1)(但只返回 age in (20, 30, 40) 的数据, 是 的缩写)
  • GET /user/index? name=Jack & name-op=ct
  • 返回结果:结构同 (1)(但只返回 name 包含 Jack 的数据, 是 的缩写)
  • GET /user/index? name=Jack & name-op=sw
  • 返回结果:结构同 (1)(但只返回 name 以 Jack 开头的数据, 是 的缩写)
  • GET /user/index? name=Jack & name-op=ew
  • 返回结果:结构同 (1)(但只返回 name 以 Jack 结尾的数据, 是 的缩写)
  • GET /user/index? name-op=ey
  • 返回结果:结构同 (1)(但只返回 name 为空 或为 null 的数据, 是 的缩写)
  • GET /user/index? name-op=ny
  • 返回结果:结构同 (1)(但只返回 name 非空 的数据, 是 的缩写)
  • GET /user/index? name=Jack & name-ic=true
  • 返回结果:结构同 (1)(但只返回 name 等于 Jack (忽略大小写) 的数据, 是 的缩写)

Bean Searcher 还支持 更多 的检索方式(甚至可以自定义,参考: 参数 > 字段参数 > 字段运算符 章节),这里就不再列举了。

本例的 接口里我们只写了一行代码,它便可以支持这么多种的检索方式,你现在体会到了 一行代码便可实现复杂列表检索 的含义了吗?有没有觉得你现在写的一行代码可以干过别人的一百行呢?

如果需要查看 Bean Searcher 的 SQL 执行日志,只需在您的日志配置文件中将 的日志级别调整为 即可。

若日志级别配置为 或 ,则只打印 慢 SQL 日志,配置为 则 慢 SQL 与 普通 SQL 都打印。

  • 示例1:SpringBoot 项目
  • 示例2:SpringBoot 项目
  • 示例3:SpringBoot 项目的日志配置,可参考 logback-spring.xml
  • 示例4:Grails 项目的日志配置,可参考 logback.groovy

输出级别配置好后,SQL 日志的效果如下:

Bean Searcher 使用日志门面 打印日志(这也是 Bean Searcher 的唯一依赖),它并不依赖 ,所以 等其它日志框架也是支持的哦。

慢 SQL 相关配置,可参考:高级 > 慢 SQL 日志与监听 章节。

  • 上一篇: java会员教程
  • 下一篇: 韩顺平java教程
  • 版权声明


    相关文章:

  • java会员教程2025-01-03 09:42:00
  • java双师视频教程2025-01-03 09:42:00
  • 最新 java开发教程2025-01-03 09:42:00
  • java 桌面教程视频2025-01-03 09:42:00
  • java 多态教程2025-01-03 09:42:00
  • 韩顺平java教程2025-01-03 09:42:00
  • java620教程2025-01-03 09:42:00
  • java去银行取钱教程2025-01-03 09:42:00
  • java画板 教程2025-01-03 09:42:00
  • java239教程2025-01-03 09:42:00