查询结果处理 - jOOQ 系列教程

查询结果处理

POJO是一个简单的Java对象,主要是包含一些属性和 getter/setter 方法,在业务中常用到的是用于传输数据以及作为参数传递。 在Web应用的场景中,也通常用来和前端做数据交互

jOOQ的代码生成器能够帮我们根据表结构生成对应的POJO,能很大程度上减少我们自己创建POJO的工作量,当然,此功能也是大部分ORM框架的必备功能。本章主要讲解各种方式将数据结果转换为我们想要的格式

Fetch 系列 API

查询操作通常以fetch API 作为结束API,例如常用的有,所有的读取类方法都差不多,掌握一个就能很快的举一反三

fetch

作为一个常用的读取多条记录的API,其他几个读取多条的方法和这个方法类似,只是返回值不同

fetchSet, fetchArray 方法和 fetch 方法一样,都是返回多条数据,只是返回的格式不同,fetch通常返回List或者jOOQ的Result对象

接下来介绍一下几个方法重载的返回值

fetch*

fetchSet, fetchArray, fetchAny, fetchOne, fetchSingle 这几个方法的和 fetch 方法的用法一致,只是返回值不同,这里不做详解

fetchAny, fetchOne, fetchSingle 方法返回单条数据,但是对于 数据为空、SQL结果为多条数据 的情况下,处理方式各不相同

方法名 无数据 多条数据 单条数据
fetchAny 返回空 返回第一条 正常返回
fetchOne 返回空 抛出异常 正常返回
fetchSingle 抛出异常 抛出异常 正常返回

fetchMap

此方法可以将结果集处理为一个Map格式,此方法有很多重载,这里介绍几个常用的,注意,此方法作为key的字段必须确定是在当前结果集中是唯一的,如果出现重复key,此方法会抛出异常

fetchGroups

此方法可以将结果集处理为一个Map格式,和fetchMap类似,只不过这里的值为一个指定类型的集合,通常在处理一对多数据时会用到

内容总结

本章源码: https://github.com/k55k32/learn-jooq/tree/master/section-3

文章主要讲解的是各种类型的读取API,掌握好这些API对于jOOQ的使用很有帮助

本章中出现的一下几个接口可能是在编码过程中经常遇到的