golong mysql orm_golang orm对比

各主流的golang orm介绍

当前较为主流/活跃的orm有gorm、xorm、gorose等

xorm

支持的数据库有:mysql、mymysql、postgres、tidb、sqlite、mssql、oracle

事务性支持

链式api

has, err := engine.Where("name = ?", name).Desc("id").Get(&user)

err := engine.Where(builder.NotIn("a", 1, 2).And(builder.In("b", "c", "d", "e"))).Find(&users)

支持原生sql操作

查询缓存

可根据数据库反转生成代码

级联加载

提供sql语句日志输出

支持批量查询处理

// 每次处理100条

// SELECT * FROM user Limit 0, 100

// SELECT * FROM user Limit 101, 100

err := engine.BufferSize(100).Iterate(&User{Name:name}, func(idx int, bean interface{}) error {

user := bean.(*User)

return nil

})

自动化的读写分离/主从式

dataSourceNameSlice := []string{masterDataSourceName, slave1DataSourceName, slave2DataSourceName}

engineGroup, err := xorm.NewEngineGroup(driverName, dataSourceNameSlice)

gorm

hook机制(Before/After Create/Save/Update/Delete/Find)

对象关系Has One, Has Many, Belongs To, Many To Many, Polymorphism

热加载

支持原生sql操作

事务性

链式api

tx := db.Where("name = ?", "jinzhu").Where("age = ?", 20).Find(&users)

支持的数据库有:mysql、postgre、sqlite、sqlserver

查询操作

// Get first record, order by primary key

db.First(&user)

SELECT * FROM users ORDER BY id LIMIT 1;

// plain sql

db.Where("name = ? AND age >= ?", "jinzhu", "22").Find(&users)

// map

db.Where(&User{Name: "jinzhu", Age: 20}).First(&user)

SELECT * FROM users WHERE name = "jinzhu" AND age = 20 LIMIT 1;

gorose

支持的数据库有:mysql、postgres、sqlite、mssql、oracle

链式api

同时连接多个数据库和切换

支持原生sql操作

支持批量查询处理

事务性

User.Fields("id, name").Where("id",">",2).Chunk(2, func(data []map[string]interface{}) {

// for _,item := range data {

// fmt.Println(item)

// }

fmt.Println(data)

})

upper/db

同时支持nosql和sql的orm不多,这是其中之一 (另一个是beedb,已经四年没有更新了). upper/db对多种数据库进行封装,提供统一的接口进行CRUD.

支持的数据库有:PostgreSQL, MySQL, SQLite, MSSQL, QL and MongoDB.

不支持根据数据库类生成数据库表等DCL操作,只有DQL,DML

与大部分orm 框架相同,提供连接池

对RDBMS支持事务性

sess, err := postgresql.Open(settings)

if err != nil {

log.Fatalf("db.Open(): %q\n", err)

}

defer sess.Close()

var books []Book

err = sess.Collection("books").Find().All(&books)

总结

相似性

各orm支持的数据库都基本相同(主流数据库都支持)

支持事务性、链式查询等

差异

xorm、gorose支持批量查询处理

xorm支持主从式读写分离

gorm支持热加载

gorose便于在多个数据库切换

文档全面性gorm>xorm>gorose

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Uber致人死亡或为自动驾驶肇事责任 没有判例可循

图:Uber自动驾驶测试车辆引发致人死亡交通事故凤凰网科技讯 据《福布斯》网站北京时间3月20日报道,美国当地时间本周日傍晚,一辆由Uber运营的自动驾驶汽车在亚利桑那州坦佩(Tempe)撞倒了一名女性并致其死亡。Uber周一表示,公司暂停…

28个Unix/Linux的命令行神器

From: http://os.51cto.com/art/201207/347414.htm 下面收集的Unix/Linux下的28个命令行下的工具,有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的。这些工具都非常不错,希望每个人都知道。本篇文章还在Hacker News上被…

Java加密与解密的艺术~SHA算法实现

MesssageDigest类也支持SHA算法,主要包含SHA-1、SHA-256、SHA-384和SHA-512四种算法。通过第三方加密组件包Bouncy Castle,可支持SHA-224算法。 SHA Java原始 /*** 2009-9-3*/ package org.zlex.chapter06_2_1;import java.security.MessageDigest; /**…

linux 无法打开.ttf_win7系统ttf文件打不开怎么办【解决方法】

我们都清楚ttf文件是windows系统当中的字体文件,能够直接通过这个文件进行字体的添加,不过最近有位win7系统用户却遇到了ttf文件无法打开的情况,系统提示“该文件没有与之关联的程序来执行该操作。请安装一个程序,或者&#xff0c…

全球20大智慧城市排行榜揭晓:无锡列中国第一,银川、杭州上榜!

来源:Juniper Research、物联网智库近日,英国市场调研机构Juniper Research发布了“全球智慧城市Top 20”的榜单,这份榜单从出行、医疗、公共安全和工作效率四个方面对城市的智能化程度进行综合评定,并揭示了这些城市在节省时间、…

Mono 2.0

Mono 2.0 Mono 2.0 发布有一段时间了,早就想体验一下,一直没时间,最近比效闲,非常闲,于是就尝试了一下Mono 2.0 操作系统 考虑到兼容问题,我没选择常用的Rad Hat,而是选择了openSUSE 11.0 , openSUSE 11.0 我也是第一次用, 在Virtual PC 2007上安装,每次到开始安装就黑屏,…

Java加密与解密的艺术~MAC算法实现

Java 原生 /*** 2009-9-10*/ package org.zlex.chapter06_3_1;import javax.crypto.KeyGenerator; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec;/*** MAC加密组件* * author 梁栋* version 1.0* since 1.0*/ public abs…

mysql rpm 启动_MySQL安装(rpm)和启动配置

MySQL安装(rpm)和启动配置安装环境:OS:Oracle Linux 5.9安装步骤:1.解压MySql安装包[rootbakdbserver mysql]# tar -xf MySQL-5.5.24-1.rhel5.x86_64.tar[rootbakdbserver mysql]# ll总计 373920-rw-r--r-- 1 root root 191242240 2012-05-2…

量子计算陷入难解困境,未来发展何去何从?

来源:科研圈量子计算机在一些具体任务上的表现很快就能超越传统电子计算机,但是在量子计算真正实现其巨大潜力前,依然需要克服许多基础性的难题。在量子计算的可行性被质疑长达几十年后,全世界范围内忽然掀起了对于量子计算的追逐…

Oracle中输出一个变量

select abc from dual; dual为系统表转载于:https://www.cnblogs.com/DoNetBird/archive/2008/11/22/1339049.html

mysql 64位 8.0.11_mysql8.0.11 在windows64安装 步骤

环境:Windows 101一、安装1. 解压zip包到安装目录比如我的安装目录是:D:\Program\MySQL2.配置文件在Windows系统中,配置文件默认是安装目录下的 my.ini 文件,部分配置需要在初始安装时配置,大部分也可以在安装完成后进…

ProxyChains

proxychains-ng:https://github.com/rofl0r/proxychains-ng proxychains:https://github.com/haad/proxychains shadowsocks:https://github.com/shadowsocks/shadowsocks 安装了 shadowsocks 之后,只能网页出去逛逛,…

IDC发布对话式人工智能白皮书|附下载

来源:专知丨公众号近日,全球著名的信息技术、电信行业和消费科技咨询公司IDC(国际数据公司, International Data Corporation)发布了《对话式人工智能白皮书》(下文简称《白皮书》)。《白皮书》…

Java加密与解密的艺术~思维导图

#原图 System.out.println("https://www.processon.com/view/link/61a8323fe401fd49ed41cde0");

一场关于Google不作恶信条的辩论会

2008年11月18日,Intelligence Squared 在纽约 Rockefeller 大学召开了一次关于 Google 不作恶信条(Dontt be evil Motto)的辩论会,这场牛津式辩论会(Oxford-style debate )持续了近两个小时,《纽…

在 windows 下使用 Xming+Putty 显示 Linux 下软件图形界面

From: http://www.blogjava.net/ivanwan/archive/2012/04/26/376670.html From: http://www.bubuko.com/infodetail-807886.html 安装 Xming 和 Putty 看 Wiki 系统地了解了一下 X Window System。X Window System(常被简称为X11或X),是一套…

mysql存储过程参数与属性同名问题_存储过程中参数与表名相同的二义性问题

写了一个很简单的存储过程,发现执行了,但是表的数据没有改变,存储过程如下:procedure sp_upd_update_jsgl(mc in varchar2,--名称sm in varchar2--说明)isbeginupdate jsgl set smsm where mc mc ;endwhere后面的名称执行的时候mc…

2017美国人工智能和机器学习行业种子投资首次下降

来源:199IT互联网数据中心根据Crunchbase的数据,风险投资对机器学习和人工智能的热情已经开始趋于平静,至少在美国是这样。但这可能并不是一件坏事。尽管人工智能和机器学习成为学术研究的热点领域已经有数十年了,但是尚未成为风险…

Java加密与解密的艺术~AES实现

AES算法成为DES算法的替代者,其实现也成为其他对称加密算法实现的参考模型。 AES 实现 /*** 2009-10-5*/ package org.zlex.chapter07_3;import java.security.Key;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey;…

AUTOSAR从入门到精通-存储配置(NvM)(二)

目录 前言 原理 NVM与其他模块之间的关联 NVM的组成 Block的三种管理类型 NV Block与RAM Block之间的数据同步(读出与写入) NvRam Block与Nv Block的mapping接口