# HiSql
**Repository Path**: zcwzfj/hisql
## Basic Information
- **Project Name**: HiSql
- **Description**: HiSql 新一代无实体ORM框架 为低代码而生的ORM框架,第一个支持sql语句跨数据平台的ORM框架,第一个支持HANA的ORM框架!
- **Primary Language**: C#
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://hisql.net
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 26
- **Created**: 2022-11-30
- **Last Updated**: 2022-11-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# HiSql
目前的ORM框架对是基于实体的,包发生变化或增加字段时比较麻烦,所以有了开发无体实ORM的想法,结合项目中对于数据库中操作的痛点通过HiSql来实现解决
支持常用的数据库且国内第一个支持Hana的ORM框架
### 特点
1. 支持无实体数据交互,(无需要创建实体类)
2. 数据动态检测(类型,长度 与表结构预先匹配)
3. 语法更帖近于原生SQL
4. 支持超时监控(如监控过5S的执行的SQL语 并记录)
5. 支持多种库,可自主选择需要支持的库
### 项目引用
注:也可以通过nuget安装
1. 引用HiSql.dll文件
2. 根据使用数据库的需要可以引用以下数据库实现的sdk
1. HiSql.sqlserver.dll
2. HiSql.hana.dll
3. HiSql.mysql.dll
4. HiSql.oracle.dll
5. HiSql.postgresql.dll
6. HiSql.dameng.dll `新支持1.0.4及以上支持`
7. HiSql.Sqlite.dll `新支持1.0.4.7以上支持`
### hisql官方群
为了更好的服务于真正使用hisql的用户, 进群的伙伴必须是在github或gitee 上star了hisql项目或进行过捐的伙伴的方能进群
### 初始安装
注:只需要执行一次即可
```c#
sqlclient.CodeFirst.InstallHisql();
```
目前流行的ORM框架如果需要动态的拼接查询语句,只能用原生的sql进行拼接,无法跨不同数据库执行。hisql推出新的语法一套语句可以在不同的数据库执行
传统ORM框架最大的弊端就是完全要依赖于实体用lambda表达式写查询语句,但最大的问题就是如果业务场景需要动态拼接条件时只能又切换到原生数据库的sql语句进行完成,如果自行拼接开发人员还要解决防注入的问题,hisql 刚才完美的解决这些问题,Hisql底层已经对sql注入进行了处理,开发人员只要关注于业务开发
### 2022.11.12 更新
1. 增加将查询结果直接插入到表中如下
```c#
//目标表可以是一个不存在的表 也可以是一个存在的表
sqlClient.HiSql("select * from Hi_FieldModel").Insert("tmp_hi_2022");
```
2. 也支持插入临时表 (除HANA,ORACLE,达梦)之外都支持
```c#
sqlClient.HiSql("select * from Hi_FieldModel").Insert("#tmp_hi_2022");
```
### 2022.9.13 更新
1. `HiSql`语句新增`is null` 和 `is not null` 查询语法
```c#
sqlClient.HiSql("select * from H_tst10 where birth is null").ToJson();
```
2. 数据插入时可以允许集合中的字段数不一样 如下更新所示
```c#
sqlClient.Insert(tabname, new List> {
new Dictionary
{
{ "SID",1},
{ "uname","tansar"}
},
new Dictionary
{
{ "SID",2},
{ "uname","tansar"},
{ "birth",DateTime.Now}
},
new Dictionary
{
{ "SID",3},
{ "gname","tgm"},
{ "birth",DateTime.Now}
},
new Dictionary
{
{ "SID",5},
{ "uname","tansar"},
{ "gname","tgm"}
}
}).ExecCommand();
```
### 2022.8.10 更新
1. 新增支持sqlite 目前已经支持sqlserver,oracle,hana,,mysql,postgresql,达梦,sqlite
2. 新增表结构升级功能(文档后续更新)
3. 之前用过Hisql的项目更新了使用了新版本后需要重新执行一下 `sqlclient.CodeFirst.InstallHisql()`
### 2022.7.7 新增自动产生SNRO编号
操作步骤
1. 启用Snro编号
```c#
HiSql.Global.SnroOn = true;
//只要执行一次 启用Snro编号 将会安装创建Hi_Snro表
sqlClient.CodeFirst.InstallHisql();
HiSql.SnroNumber.SqlClient = sqlClient;
```
2. 配置编号
```c#
List