JQuick-SQL 列元数据与表别名避免列解析失败Meta 描述讲解 JQuickColumnMeta 的列名、类型和表别名参数说明 SQL 别名匹配规则、JQuickRow 写入方式及 JQuickDataSet 并发边界。标签JQuickColumnMeta、表别名、JQuickRow、jquick-sql、SQL Join、Java 跨库查询官网示例FORMULAS 示例页https://www.jquick.org/jquick-sqlgithub 地址https://github.com/paohaijiao/jquick-sql前言在多表查询中列名重复是常态。jquick-sql 用JQuickColumnMeta的第三个参数保存表别名/表名并要求 SQL 中引用的别名与元数据一致。这是避免列解析失败的关键约束。JQuickColumnMeta 的三个参数ListJQuickColumnMetauserColumnsArrays.asList(newJQuickColumnMeta(id,Integer.class,users),newJQuickColumnMeta(name,String.class,users));ListJQuickColumnMetaorderColumnsArrays.asList(newJQuickColumnMeta(user_id,Integer.class,orders),newJQuickColumnMeta(amount,Double.class,orders));参数分别为列名、Java 类型和表别名。布尔字段应声明为Boolean.class不要依赖字符串true/false的自动转换。SQL 别名必须对齐以下 SQL 使用的别名与元数据的表名一致SELECTusers.name,orders.amountFROMusersLEFTJOINordersONusers.idorders.user_id若把 SQL 写为users u、orders o而列元数据仍是users、orders应按项目的别名匹配约束调整元数据或查询表达使两者一致否则列解析会失败。JQuickRow 的键应使用列名JQuickRowrownewJQuickRow();row.put(id,1);row.put(name,Alice);行 key 应与注册的列名匹配。随后可用registerTable(users, userColumns, rows)注册。不要尝试用 JDBCResultSet直接替代此 API应先完成上游数据转换。结果集并发边界JQuickDataSet非线程安全。查询结果若被异步任务消费应避免多个线程无同步地修改其行、列或迭代状态。常见问题**别名写错会怎样**会导致列解析失败。**能只写id吗**无歧义时可行多表查询应显式限定。**Row 的 key 写表前缀吗**README 示例以纯列名作为 key。总结与拓展显式的列类型与别名能让 Join、投影和过滤更稳定是把异构数据源联邦查询结果注册进 jquick-sql 前必须统一的元数据契约。Core AdvantageColumn metadata makes table-qualified SQL references deterministic.Applicable ScenariosJoins, reusable datasets, schema normalization, and connector output adaptation.
阅读完成 · 觉得有帮助?