# dsql
**Repository Path**: tenmg/dsql
## Basic Information
- **Project Name**: dsql
- **Description**: 动态结构化查询语言(DSQL,Dynamic Structured Query Language)解析框架
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 2
- **Created**: 2021-07-02
- **Last Updated**: 2024-11-10
## Categories & Tags
**Categories**: Uncategorized
**Tags**: DSQL, SQL
## README
# DSQL
## 简介
DSQL 的全称是动态结构化查询语言(Dynamic Structured Query Language),他是一种对结构化查询语言(SQL)的一种扩展。DSQL 基于[DSL](https://gitee.com/tenmg/dsl)实现,并在其上封装了配置工厂,可轻松管理和解析复杂的 DSQL。DSQL与 [DSL](https://gitee.com/tenmg/dsl) 一样,使用 `:` 加参数名表示普通参数,使用 `#` 加参数名表示嵌入参数,使用特殊字符 `#[]` 标记动态片段,当实际执行查询时,判断实际传入参数值是否为空(`null`)决定是否保留该片段,从而达到动态执行不同 SQL 的目的。以此来避免程序员手动拼接繁杂的 SQL,使得程序员能从繁杂的业务逻辑中解脱出来。此外,DSQL 还为查询参数提供转换器和过滤器,来对参数进行转换和过滤;同时,DSQL 脚本支持宏,来增强 SQL 的动态逻辑处理能力,避免使用函数导致索引破坏等。
## 起步
以基于Maven项目为例
pom.xml添加依赖,${dsql.version} 为版本号,可定义属性或直接使用版本号替换
```
cn.tenmg
dsql
${dsql.version}
```
创建DSQL工厂(该过程需要扫描XML配置文件,建议使用单例,使用时注入即可)。
```
String basePackages = "cn.tenmg", suffix = ".dsql.xml";
DSQLFactory factory = new XMLFileDSQLFactory(basePackages, suffix);
```
使用DSQL工厂解析DSQL为NamedSQL对象
```
NamedSQL namedSQL = factory.parse(dsqlId, params);
// 或者
NamedSQL namedSQL = factory.parse(plainDSQLText, params);
```
将NamedSQL对象转换为Script对象
```
Script> sql = factory.toJDBC(namedSQL, params);
// 或者
Script> sql = DSLUtils.toScript(namedSQL.getScript(), namedSQL.getParams(),
JDBCParamsParser.getInstance());
```
将Script对象提交给JDBC执行
```
……
List