hisql.net 官网(文档编写中)
HiSql 源码(github) https://github.com/tansar/HiSql
git clone https://github.com/tansar/HiSql.git
数据插入插入
HiSql 提供了丰富多样的数据插入方式,通过极致的性能优化目前在常用的ORM中名列前茅
单表数据插入
性能测试结果
插入记录数 |
hisql(耗时) |
sqlsugar(耗时) |
freesql(耗时) |
5条 |
0.0107秒 |
0.0312秒 |
0.02675秒 |
10条 |
0.0111秒 |
0.0307秒 |
0.0271秒 |
50条 |
0.0174秒 |
0.0364秒 |
0.0430秒 |
100条 |
0.0281秒 |
0.0472秒 |
0.0922秒 |
200条 |
0.0310秒 |
0.0584秒 |
0.2319秒 |
500条 |
0.0712秒 |
0.1127秒 |
0.5996秒 |
1000条 |
0.1112秒 |
0.1871秒 |
0.8145秒 |
10000条 |
1.0440秒 |
1.6415秒 |
5.3671秒 |
100000条 |
10.3279秒 |
15.8685秒 |
46.0261秒 |
通过匿名类插入
匿名类的最大优点就是可以不依赖于实体类,不需要为表单独创建一个类,对于需要快速方便快捷的插入数据还是很有用的,插入后如果返回值大于0表示成功,
::: tip
匿句类的字段列名称要与数据库中对应至少要一个字段要对应不然HiSql将会抛出异常
HiSql允许插入的对象列集合大于数据库中的列集合
字段名称忽略大小写
:::
示例HiSql匿名类向表数据写入
int _effect= sqlClient.Insert("HTest01", new { SID =123456, UName ="tansar", Age =25, Salary =1999.9, Descript ="hello world"}).ExecCommand();
如果插入的数据集合大于数据中的列 也可以插入成功,如下所示
//TestColumn 这个列在表HTest01 不存在,如果不存在HiSql底层对数据校验时将会自动忽略它
int _effect= sqlClient.Insert("HTest01", new { SID =123456, UName ="tansar", Age =25, Salary =1999.9, Descript ="hello world",TestColumn="测试"}).ExecCommand();
列的大小写不一致也可以自动识别进行写入
int _effect= sqlClient.Insert("HTest01", new { sid =123456, uname ="tansar", age =25, Salary =1999.9, descript ="hello world" }).ExecCommand();
批量插入匿名类
如果需要向表在插入多条数据请用以下方式
批量写入多少数据没有限制,在HiSql底层是会通过数据大小,列大小自动计算不同的数据库执行数据包大小的最优化方案
List