원클릭으로
anyline
AnyLine数据库操作开发规范,涵盖动态数据源注册切换注销、DDL动态建表改表、DML增删改与事务管理、DQL动态查询与聚合统计、元数据管理、查询结果集的聚合、过滤、格式转换等数学计算,AnyLine方法内部会自动适配100+数据库方言,调用方法时忽略不同数据库差异。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
AnyLine数据库操作开发规范,涵盖动态数据源注册切换注销、DDL动态建表改表、DML增删改与事务管理、DQL动态查询与聚合统计、元数据管理、查询结果集的聚合、过滤、格式转换等数学计算,AnyLine方法内部会自动适配100+数据库方言,调用方法时忽略不同数据库差异。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | anyline |
| description | AnyLine数据库操作开发规范,涵盖动态数据源注册切换注销、DDL动态建表改表、DML增删改与事务管理、DQL动态查询与聚合统计、元数据管理、查询结果集的聚合、过滤、格式转换等数学计算,AnyLine方法内部会自动适配100+数据库方言,调用方法时忽略不同数据库差异。 |
AnyLine 是一个元数据驱动的动态数据管理框架,核心能力是通过统一 API 完成所有数据库操作,由框架内部自动适配 100+ 种数据库并屏蔽数据库间的语法差异,运行时自动生成适配目标数据库的原生 SQL。 你作为一个精通 AnyLine 的专家在生成 AnyLine 相关代码时,需要注意:
references/ 文件夹中找到对应的详细 API 文档。AnyLine 支持多种非关系型数据库和特殊数据源,通过统一的 API 进行操作:
anyline-data-neo4j 或 anyline-data-jdbc-neo4j 模块支持anyline-data-nebula 模块支持anyline-data-tugraph 模块支持service.selects() 等方法,框架自动生成 Cypher 或 nGQLanyline-data-mongodb 模块支持anyline-data-dify 模块支持,用于 RAG 文档检索anyline-data-coze 模块支持anyline-data-jdbc-elasticsearch 模块支持anyline-data-jdbc-cassandra 模块支持anyline-data-hbase 模块支持// 获取指定数据源的 Service
AnylineService crmService = ServiceProxy.service("crm");
crmService.select("CRM_USER");
// 获取默认数据源的 Service
AnylineService defService = ServiceProxy.service();
defService.select("HR_USER");
// 在表名前添加数据源名称,仅当前查询有效
service.select("<crm>CRM_USER");
// 创建临时数据源,用完自动回收
DataSource ds = DataSourceUtil.build(...);
AnylineService service = ServiceProxy.temporary(ds);
service.select("CRM_USER");
// 根据数据库类型创建虚拟数据源,用于生成SQL脚本
AnylineService service = ServiceProxy.service(DatabaseType.POSTGRESQL);
ConfigStore configs = new DefaultConfigStore();
service.selects("CRM_USER", configs);
List<Run> runs = configs.runs();
// 获取生成的 PostgreSQL SQL
SQL执行过程中,在控制台或日志文件中会生成带占位符的日志。
如果需要在执行完成后返回SQL(DQL DDL DML),可以在service调用的方法中添加ConfigStore参数
在执行完成后从ConfigStore中获取执行的SQL,
因为执行的SQL可能是多条,所以会返回一个List集合,
默认情况下Run中的SQL是带占位符的,与占位值分开存储
List<Run> runs = configs.runs();
for (Run run:runs){
System.out.println("无占位符 sql:"+run.getFinalQuery(false));
System.out.println("有占位符 sql:"+run.getFinalQuery());
System.out.println("占位values:"+run.getValues());
}
如果只需要生成SQL,但不执行,可以调用相应的adapter.buildQueryRun/buildDeleteRun等方法 返回的Run与以上操作相同
因为adapter平时不常用,所以许多人对此不太熟悉,也可以在ConfigStore上调用execute(false)方法
然后调用service.selects/insert/save/update()时提供这个ConfigStore这样querys/insert/save/update等执行后实际SQL并没有执行,只是把生成的SQL保存到了configs.runs
ConfigStore configs = new DefaultConfigStore().execute(false);//false表示最后实际操作数据库的一步不执行
DataSet set = service.selects(table, configs);
System.out.println(set);//因为最后一步没有执行,所以这里应该输出空集合
List<Run> runs = configs.runs();
for (Run run:runs){
System.out.println("无占位符 sql:"+run.getFinalQuery(false));
System.out.println("有占位符 sql:"+run.getFinalQuery());
System.out.println("占位values:"+run.getValues());
}
DDL也类似,因为DDL执行过程中有元数据的对象所以execute(false)在metadata(table/column等)上执行
Table table = service.metadata().table("sso_user"); //获取表结构
table.execute(false);//不执行SQL
service.ddl().create(table);
List<Run> runs = table.runs(); //返回创建表的DDL
String sql = run.getFinalUpdate()
通过 ConfigTable 可以设置全局配置:
// 主键默认列名
ConfigTable.DEFAULT_PRIMARY_KEY = "ID";
// 是否自动检测元数据
ConfigTable.IS_AUTO_CHECK_METADATA = true;
// 元数据缓存时间(秒)
ConfigTable.METADATA_CACHE_SECOND = 3600 * 24;
// 是否返回空实例替代null
ConfigTable.IS_RETURN_EMPTY_INSTANCE_REPLACE_NULL = true;
// 列名大小写处理
ConfigTable.IS_UPPER_KEY = true; // 列名转大写
ConfigTable.IS_LOWER_KEY = false; // 列名转小写
// 空值处理
ConfigTable.IS_INSERT_NULL_COLUMN = false;
ConfigTable.IS_UPDATE_NULL_COLUMN = false;
ConfigTable.IS_INSERT_EMPTY_COLUMN = false;
ConfigTable.IS_UPDATE_EMPTY_COLUMN = false;
service.insert(200, table, set)