Go 轻量 ORM, 零依赖,零侵入分布式事务,支持达梦 (dm), 金仓 (kingbase), 神通 (shentong), 南通 (gbase),TDengine,mysql,postgresql,oracle,mssql,sqlite,db2,clickhouse 数据库.
源码地址:https://gitee.com/chunanyong/zorm
官网: https://zorm.cn
测试用例 zorm-examples
- 基于原生 sql 语句,学习成本更低.
- 自带代码生成器
- 代码精简,主体 2500 行,零依赖 4000 行,注释详细,方便定制修改
- 支持事务传播,这是 zorm 诞生的主要原因
- 支持 mysql,postgresql,oracle,mssql,sqlite,db2,dm (达梦),kingbase (金仓),shentong (神通),gbase (南通),TDengine,clickhouse
- 支持多库和读写分离
- 不支持联合主键,变通认为无主键,业务控制实现 (艰难取舍)
- 集成 seata-golang,hptx,dbpack 支持全局托管,不修改业务代码,零侵入分布式事务
- 支持 clickhouse, 更新,删除语句使用 SQL92 标准语法.clickhouse-go 官方驱动不支持批量 insert 语法,建议使用 https://github.com/mailru/go-clickhouse
更新:
- 使用RegisterCustomDriverValueConver函数替代CustomDriverValueMap变量,将
zorm.CustomDriverValueMap["*dm.DmClob"] = CustomDMText{}
修改为zorm.RegisterCustomDriverValueConver("TEXT", CustomDMText{})
,达梦数据库重新复制示例代码,重新复制!!重新复制!!! - 重写sqlRowsValues函数,支持查询单个字段,Struct类型接收
- 简化自增序列的实现,使用string代替map[string]string
- 使用OverrideFunc重写zorm的函数,暴露WrapUpdateStructFinder函数
-
去掉kingbase列的大写转换,修改字符串拼接方式,提升性能
- BindContextDisableTransaction 用在不使用事务更新数据库的场景,强烈建议不要使用这个方法,更新数据库必须有事务!!!
- 增加查询没有返回列的判断,特殊情况可以使用Query执行更新语句,绕过事务检查(不建议)
- 更新官网 https://zorm.cn
-
完善文档,注释