HiSql介绍

hisql官方群

hisql官方QQ群

为了更好的服务于真正使用hisql的用户,进群的伙伴必须是在github或gitee 上star了hisql项目或进行过捐的伙伴的方能进群

HiSql是一个可以不需要创建实体与表对应的ORM框架,它的应用场景是为低代码开发平台,工作流内核开发,ERP等注重于配置和用户自定义进行调整的系统而生的。

它帮助我们解决什么问题

1.工作中需要使用不同的数据库,每种库的语法及sdk使用方法都需要学习非常麻烦

2.目前所有流行的orm都无法自动进行数据校验(比如数据长度,类型,正则表达式匹配,表数据关联校验等),HiSql对于基础性的数据错误自动拦截并可以提示错误,避免靠数据库来报错带来的体验不友好

3.可以不需要实体对表的增删查改更加方便(在开发低代码平台,或可配置程序更高的系统时非常有用)

4.不同的类型的数据库可以相互迁移,可选择性更多

5.语法更贴近于sql 语法学习成本更低

它是如何工作的?

在第一次安装HiSql且初始化完成后在当前连接的数据库中会自动产生4张表

  1. Hi_TabModel

该表冗余表信息,及对该表的一些描述及配置

  1. Hi_FieldModel

该表冗余表的字段信息,长度,类型,描述 等等一些配置,根据这些配置HiSql可以做一些底层校验把可能的错误数据拦截出来

  1. Hi_Domain (选用)

数据域主表可以用于配置一些维度数据如 用户类型

  1. Hi_DataElement (选用)

数据域明细表用来配置数据值

如执行以下查询操作

  DataTable dt_test = sqlClient.Query("H_Test").Field("*").ToTable();
1

当第一次查询该表时会把H_Test表的表结构信息存入到Hi_TabModel和Hi_FieldModel表中 并缓存起来

  sqlClient.Insert<H_Test>(new  { DID = 123, UNAME="UTYPEHA" ,UNAME2="TEST'" }).ExecCommand();
1

在执行以上代码时HiSql会对该表插入的字段,字段类型,字段长度 是否符合Hi_FieldModel中的配置进行校验如果不合理将会抛出异常

可能小伙伴会问这样不会有性能问题吗?不会,只要预热完成,不会影响性能大家可以自行测试对比一下其它的ORM框架