发布时间:2026/8/24 4:59:59
05-EA01到EA05五张元数据表 05-EA01到EA05五张表描述任意SQLbrowise 元数据引擎的地基是五张表——EA01存SQL定义、EA02存表、EA03存字段、EA05存条件。一条SQL的全部要素查什么、从哪查、怎么过滤拆开存在这五张表里运行时按 sqlId 组装。这篇逐字段拆解五张表的物理设计和元数据对象模型。文章目录05-EA01到EA05五张表描述任意SQL一、五张表的分工二、EA01SQL主定义三、EA02FROM表定义四、EA03SELECT字段定义五、EA05WHERE条件定义六、一张完整的元数据拼出什么SQL一、五张表的分工EA01SQL主定义 一条SQL一行 ├── EA02FROM表 一条SQL N个表 ├── EA03SELECT字段一条SQL N个字段 └── EA05WHERE条件 一条SQL N个条件 EA04在browise中保留编号但已并入EA05——wiserise时代EA04存表间关联browise简化对应源码位置browise-metadata/src/main/java/com/browise/ea/core/metadata/类大小对应表装载SQLEaSqlMeta.java-EA01SELECT * FROM EA01EaTableMeta.java-EA02SELECT * FROM EA02 WHERE EAE001?EaFieldMeta.java-EA03SELECT * FROM EA03 WHERE EAE001? ORDER BY ...EaConditionMeta.java-EA05SELECT * FROM EA05 WHERE EAE001?启动时MetadataLoader.loadAll()8.5KB把五张表全量装进EaMetadataCacheConcurrentHashMap按 sqlCode 索引。二、EA01SQL主定义EAE001SQL编号 主键如SYS_USER_sEAE002 名称 展示用标题 EAE003 主表 默认FROM的表 EAE004SQL模式0综合1查询2更新3删除4插入 EAE800 原始SQLrawSql模式时使用 EAE801 是否rawSql0/1EAE004 模式字段的六种值决定了这条元数据被哪个API执行值模式执行入口0综合executeUpdate按_t参数分发_t2更新/4新增/3删除1查询query / count2更新executeUpdate3删除executeUpdate4插入insert5存储过程预留rawSql 模式EAE8011是逃生舱口复杂统计SQL没法拆成字段/条件时整条SQL存 EAE800SqlBuilder 只做#{param}→?占位符替换和分页包装第11篇专述。EaSqlMeta.java 对应字段publicclassEaSqlMeta{privateStringsqlCode;// EAE001privateStringtitle;// EAE002privateStringmainTable;// EAE003privateStringsqlMode;// EAE004privateStringrawSql;// EAE800privatebooleanhasRawSql;// EAE801}三、EA02FROM表定义EAE001SQL编号 外键→EA01 EAE005 表名 如SYS_USEREAE006 表别名 如u一条SQL查多个表时EA02有多行。SqlBuilder拼FROM时多行 →FROM SYS_USER u, SYS_UNIT d WHERE ...隐式JOIN关联条件在EA05里拼单行 →FROM SYS_USER零行rawSql → 不走这条路EaTableMeta.java 就三个字段——最简单的一张元数据表。四、EA03SELECT字段定义这是五张表里字段最多的一张也是describe()的数据源EAE001SQL编号 EAE006 表别名 关联EA02——字段属于哪个表 EAE007 字段名 数据库列名如PSN_NAMEEAE008 字段别名 查询结果的列名如psnNameEAE009 数据类型1字符2日期3数字4日期时间 EAE997 码值 关联AA10字典类别如SEXEAE998 是否码值0/1EAE700 是否可见 列表是否显示 eae991 显示类型 前端控件映射 required/regexRule/maskRule/encrypted/masked...EAE009 数据类型不只是展示信息——它直接影响SqlBuilder拼列表达式的方式Oracle方言// SqlBuilder.appendColumns 的核心分支case2:// 日期exprto_char(alias.column,yyyymmdd);break;case4:// 日期时间exprto_char(alias.column,yyyy-mm-dd hh24:mi:ss);break;default:// 字符/数字直接拼expralias.column;同一份元数据MySQL方言走DATE_FORMAT()、达梦走自己的函数——类型元数据是方言分支的依据。eae991 显示类型 → 前端控件的映射在 EaEngine.mapDisplayType()privateStringmapDisplayType(Stringeae991){if(eae991null)returntext;switch(eae991){case2:returndate;case3:returnnumber;case4:returndatetime;default:returntext;}}describe() 把它连同 codeName/encrypted/masked/pattern 全部输出给前端——CommonQuery就是靠这份JSON自动渲染表单和列表的。五、EA05WHERE条件定义最复杂的一张——它同时描述查询参数和过滤条件EAE001SQL编号 EAE006 表别名 EAE007 列名 EAE012 运算符0102like0304050607...EAE013 条件类型1固定值0动态参数 EAE014 参数名/值 动态参数名(如psnName)固定字面值 EAE015 连接符AND/OREAE016 左括号0/1EAE017 右括号0/1条件类型 EAE013 是SqlBuilder条件拼接的总开关第08篇展开1固定值→ 拼SQL时始终生效如AND u.STATUS 1只查在职0动态参数→ 运行时看参数Map——null/空串/null跳过有值才拼AND u.PSN_NAME LIKE %||?||%括号字段支持条件分组EAE0161的条件前拼(EAE0171的条件后拼)——实现(A OR B) AND C这种嵌套逻辑。EaConditionMeta.java 的 getOperatorSymbol() 把 EAE012 翻译成SQL符号getJoinOperator() 返回 AND/OR。六、一张完整的元数据拼出什么SQL配置示例——“查询在职用户按姓名模糊、按机构筛选”EA01: EAE001SYS_USER_s, EAE003SYS_USER, EAE0041 EA02: EAE001SYS_USER_s, EAE005SYS_USER, EAE006u EA03: 三行 u.PSN_ID → psnId (类型3) u.PSN_NAME → psnName (类型1, 码值无) u.PSN_SEX → psnSex (类型1, 码值SEX) EA05: 三行 u.STATUS 1 固定值 u.PSN_NAME like ? 动态(psnName) u.UNIT_ID ? 动态(unitId)运行时eaEngine.query(SYS_USER_s, {psnName:张, minRow:1, maxRow:20})拼出SELECTu.PSN_ID,u.PSN_NAME,u.PSN_SEXFROMSYS_USER uWHERE11ANDu.STATUS1ANDu.PSN_NAMELIKE%||?||%-- 参数: 张ORDERBYu.PSN_ID-- 外层再包 ROWNUM 三层分页第10篇unitId 没传——那一行动态条件被跳过。这就是五张表描述任意SQL的完整闭环。✅ 亮点逐字段拆五张元数据表的物理设计用一条在职用户模糊查询的完整示例串起EA01→02→03→05的协作点出EAE013固定/动态是条件拼接总开关、EAE009类型是方言分支依据。适合设计元数据驱动引擎的参考。扩展方向第06篇拆EaEngine调度、第07-08篇拆SqlBuilder六法与条件拼接细节。

相关新闻

2026/8/24 4:59:59

向量数据库入门 2026:从咖啡到 RAG,十分钟跑通语义搜索实战

向量数据库的核心就三件事:把文本变成一串数字、把数字存起来、用数字快速找到相似内容。不需要先懂线性代数,也不用啃 HNSW 论文,用 Python 跑一个 ChromaDB 的 Demo,十分钟就能直观感受到语义搜索的效果。真正决定检索质量的不是…

2026/8/24 4:54:54

Atmosphere崩溃0x4A8怎么解决:RetroArch闪退的完整排障指南

Atmosphere崩溃0x4A8怎么解决:RetroArch闪退的完整排障指南 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 在 Nintendo Switch…

2026/8/24 5:55:03

UE大世界射击游戏开发面试全解析与核心技术剖析

1. 面试过程全记录上周参加了鹅厂UE大世界射击游戏客户端开发的面试,整个流程持续了约90分钟。面试官是位从业8年以上的资深技术专家,主要考察方向集中在UE引擎底层原理、大世界场景优化和射击游戏核心技术实现三个方面。整个面试分为四个环节&#xff1…

2026/8/24 5:55:03

C++字符与字符串操作全解析:从基础概念到实战应用

1. 从“Hello, World!”说起&#xff1a;字符与字符串的基石地位如果你写过C&#xff0c;哪怕只是照着书敲过第一个程序&#xff0c;那你一定见过std::cout << "Hello, World!" << std::endl;这行代码。这行代码几乎成了编程世界的“创世神话”&#xff…

2026/8/24 5:55:03

Java面试必备:Spring Boot与微服务核心知识点解析

1. 项目概述作为一名Java开发老兵&#xff0c;我见过太多刚入行的朋友在面试时被Spring Boot和微服务相关的问题难倒。今天我们就来聊聊这个话题&#xff0c;希望能帮助Java新手在面试中更好地展示自己的技术实力。Spring Boot作为当下Java开发的主流框架&#xff0c;几乎成了面…

2026/8/24 5:55:02

Python字符串比较全攻略:从精确匹配到模糊搜索的实战指南

1. 从“相等”到“相似”&#xff1a;Python字符串比较的完整图景在Python里&#xff0c;判断两个字符串是否相等&#xff0c;大概是每个初学者最早学会的操作之一。str1 str2&#xff0c;一个简单的双等号&#xff0c;似乎就囊括了所有。但如果你真的在项目中处理过用户输入、…

2026/8/24 5:50:02

蚂蚁大模型面试技术要点与实战解析

1. 蚂蚁大模型面试技术要点全解析作为一名经历过蚂蚁大模型面试的从业者&#xff0c;我深刻体会到这场面试对技术深度和实战经验的严苛要求。不同于普通的技术面试&#xff0c;蚂蚁的面试官更关注候选人对技术本质的理解和解决实际问题的能力。下面我将从一面和二面的核心考点入…

2026/8/24 0:07:22

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/24 1:12:32

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/24 1:09:25

3条命令跑通LocalAI:无GPU本地AI引擎部署

3条命令跑通LocalAI&#xff1a;无GPU本地AI引擎部署 【免费下载链接】LocalAI LocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required. 项目地址: https://gitcode.com/GitHub_Trending/lo/LocalAI…

2026/8/24 1:09:25

AI推理性能测试怎么做:MLPerf Inference完整上手指南

AI推理性能测试怎么做&#xff1a;MLPerf Inference完整上手指南 【免费下载链接】inference Reference implementations of MLPerf inference benchmarks 项目地址: https://gitcode.com/gh_mirrors/inf/inference 同一个模型换一张卡&#xff0c;速度快多少你知道吗&a…

2026/8/23 13:29:45

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站&#xff0c;核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测&#xff0c;千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队&#xff0c;覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具&#xff0c;覆盖选题构思、文献整理、内容生成、格式排版等核心场景&#xff0c;真正帮你高效搞定论文难题。 一、全流程王者&#xff1a;一站式搞定论文全链路&#xff08;一天定稿首…