Go 轻量 ORM, 零依赖,零侵入分布式事务,支持达梦 (dm, 金仓 (kingbase, 神通 (shentong, 南通 (gbase,TDengine,mysql,postgresql,oracle,mssql,sqlite,db2,clickhouse 数据库.
测试用例 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 执行更新语句,绕过事务检查 (不建议
完善文档,注释