java如何使用流API从数据库加载数据?
例如,我想从数据库加载数据,基于一些过滤器,将其转换(映射)到一些对象,限制数据并将其收集到列表中:
List<Person> people = new DbStream("PERSON").filter(...).limit(20l).map(...).collect(...);
我可以使用流API(可能在后台看不到JDBC的情况下)在DB上实现吗?怎么做
*我知道它绕过了SQL语言。只是想看看有没有办法
你可以在下面搜索框中键入要查询的问题!
例如,我想从数据库加载数据,基于一些过滤器,将其转换(映射)到一些对象,限制数据并将其收集到列表中:
List<Person> people = new DbStream("PERSON").filter(...).limit(20l).map(...).collect(...);
我可以使用流API(可能在后台看不到JDBC的情况下)在DB上实现吗?怎么做
*我知道它绕过了SQL语言。只是想看看有没有办法
# 1 楼答案
可以通过使用名为Speedment的外部库来实现。它们允许您从数据库的元数据生成代码,然后使用生成的类在数据库的表上进行流式传输
在本例中,我们使用的数据库用户有三个字段:
流媒体示例(查找10个Alpabee第一用户):
插入示例:
# 2 楼答案
做你需要做的事
一个有趣的库JINQ,它执行符号字节码执行,将普通Java代码转换为SQL/JPQL或jOOQ查询。以下是一个来自文档的示例:
以上内容将(大致)转换为以下SQL查询:
或者,如果它由JPQL支持,那么它也可以生成一个完全不同的SQL查询,包括必要的连接,这取决于您指定实体和关系的方式
JINQ的灵感来自LINQ,I recommend reading this interesting interview with the author
几乎做你需要做的事
评论中提到的另一个图书馆是jOOQ。它不会将流调用映射到SQL,但允许您使用流畅的API编写SQL,然后使用流获取/转换结果。例如
但是,请注意,如果将数据库放入SQL语句中,它通常会从
.map()
或.limit()
等单个子句中获益(免责声明:我为jOOQ背后的公司工作)