JQuick-SQL 快速开始:注册内存表并执行查询
Meta 描述:通过可直接改编的 Java 示例使用 JQuickSQL.embedded、JQuickColumnMeta、JQuickRow 与 registerTable 完成首个 jquick-sql 查询。
标签:jquick-sql 快速开始、JQuickSQL.embedded、registerTable、JQuickRow、Java SQL 查询、轻量级 SQL 引擎
官网示例:
- FORMULAS 示例页:https://www.jquick.org/jquick-sql
- github 地址:https://github.com/paohaijiao/jquick-sql
前言
jquick-sql 的首个查询不依赖数据库服务。你需要准备列元数据、行对象,注册为表,再用 SQL 得到 JQuickDataSet。这是验证 Java 跨库查询上游数据集接入的基础步骤。
创建嵌入式引擎
JQuickSQL.embedded() 会启用嵌入式模式。资源释放必须放在 finally 中,确保 Worker 与协调器被关闭。
定义列与行
JQuickColumnMeta 的构造参数依次是列名、Java 类型、表别名/表名;JQuickRow 使用列名作为 key:
java
List<JQuickColumnMeta> columns = Arrays.asList(
new JQuickColumnMeta("id", Integer.class, "users"),
new JQuickColumnMeta("name", String.class, "users"),
new JQuickColumnMeta("age", Integer.class, "users")
);
JQuickRow alice = new JQuickRow();
alice.put("id", 1);
alice.put("name", "Alice");
alice.put("age", 25);
注册并查询
java
JQuickSQL sql = JQuickSQL.embedded();
try {
List<JQuickRow> rows = Arrays.asList(alice);
sql.registerTable("users", columns, rows);
JQuickDataSet result = sql.execute(
"SELECT id, name FROM users WHERE age >= 25"
);
result.printTable();
System.out.println(result.size());
} finally {
sql.shutdown();
}
结果使用与边界
结果是 JQuickDataSet,可 printTable()、size() 或从行列数据继续处理。JQuickDataSet 非线程安全;如果多个线程使用查询结果,应由调用方隔离或同步。此过程并未创建 JDBC 连接,数据必须已经注册。
常见问题
**列的第三个参数能随意填写吗?**不能;若 SQL 使用表别名,必须与列元数据的别名匹配。
**是否支持多行?**支持,向 registerTable 传入 List<JQuickRow>。
**为什么一定要 shutdown?**嵌入式 Worker 会占用本地端口和执行资源。
总结与拓展
先通过内存表验证 SQL,再将业务侧数据标准化为列元数据与行数据,是使用 Java 分布式 SQL 查询引擎的稳健路径。
Core Advantage
A small Java API turns in-memory rows into queryable datasets.
Applicable Scenarios
Unit tests, offline reports, rule checks, and embedded service analytics.