文章目录

  • 前言
  • 一、正确看待orm
    • 1.什么是orm
    • 2.常用的orm
    • 3.orm的优缺点
    • 4.如何正确看待orm和sql之间的关系
  • 二、gorm入门

前言

Gorm 是 Golang 的一个 orm 框架。ORM 是通过实例对象的语法,完成关系型 数据库的操作,是"对象-关系映射"(Object/Relational Mapping) 的缩写。使用 ORM 框架可以让我们更方便的操作数据库。

Gorm官方支持的数据库类型有: MySQL, PostgreSQL, SQlite, SQL Server

作者是中国人,中文文档齐全,对开发者友好,支持主流数据库。


一、正确看待orm

1.什么是orm

跟python的peewee一样的概念

peewee框架:https://blog.csdn.net/the_shy_faker/article/details/127570155

ORM全称是:Object Relational Mapping(对象关系映射),其主要作用是在编程中,把面向对象的概念跟数据库中表的概念对应起来。举例来说就是,我定义一个对象,那就对应着一张表,这个对象的实例,就对应着表中的一条记录。
对于数据来说,最重要最常用的是表∶表中有列,orm就是将一张表映射成一个类,表中的列映射成类中的一个类。java .、 python,但是针对go语言而言,struct,就是列如何映射,是因为列可以映射成struct中的类型,int->int,但是有另一个问题?就是数据库中的列具备很好的描述性,但是struct有tag。执行sql,需要我们有足够的sql语句基础、需要我们懂得不同的数据的sql

2.常用的orm

个人而言,不用太去纠结应该选择哪一个orm框架,但是实际上你用熟悉了一个,其他的orm迁移成本很低,我们选个一个star数量最高的一定不会有错,这些差异也不会很大
sql语言远比orm重要的多

https://github.com/go-gorm/gorm
https://github.com/facebook/ent
https://github.com/jmoiron/sqlx
https://gitea.com/xorm/xorm/src/branch/master/README_CN.md
https://github.com/didi/gendry/blob/master/translation/zhcn/README.md

3.orm的优缺点

优点:

  • 提高了开发效率。
  • 屏蔽sql细节。可以自动对实体Entity对象与数据库中的Table进行字段与属性的映射;不用直接SQL编码
  • 屏蔽各种数据库之间的差异

缺点:

  • orm会牺牲程序的执行效率和会固定思维模式
  • 太过依赖orm会导致sql理解不够
  • 对于固定的orm依赖过重,导致切换到其他的orm代价高

4.如何正确看待orm和sql之间的关系

  1. sql为主,orm为辅
  2. orm主要目的是为了增加代码可维护性和开发效率

一定要学好:

  • group by
  • 子查询
  • having子句

二、gorm入门

github:https://github.com/go-gorm/gorm

官方文档:https://gorm.io/

建议直接去官方文档去学 因为它更详细 还支持中文 要啥有啥 我也就懒得往下写了 毕竟它已经说的很详细了

【ORM框架】go语言ORM框架 - gorm快速入门相关推荐

  1. php yii2 api框架,Yii2框架制作RESTful风格的API快速入门教程

    先给大家说下什么是REST restful REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移. 它首次出现在2000年Ro ...

  2. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  3. 开源即时通讯IM框架MobileIMSDK的Uniapp端开发快速入门

    ► 相关链接: ① MobileIMSDK-Uniapp端的详细介绍 ② MobileIMSDK-Uniapp端的开发手册new(* 精编PDF版) 一.理论知识准备 您需要对Uniapp和Vue开发 ...

  4. 华为AI计算框架昇思MindSpore零基础快速入门 (上)

    一.基础介绍 门槛最低的深度学习引导 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/463019160MindSpore入门实践 - 知乎 (zhihu.c ...

  5. JAVA框架——struts(一)struts快速入门,struts访问流程,struts配置文件详解,动态方法调用

    一. Struts2框架概述 是一种基于MVC模式的轻量级web框架.本质是一个Servlet.作为控制器建立模型与视图的数据交互.Struts2以WebWord为核心,采用拦截器的机制处理客户的请求 ...

  6. neon 指令 c语言,Neon指令集优化快速入门教程

    Neon指令集优化快速入门教程 Neon指令集优化快速入门教程 文章目录 1. Neon是什么? 2.Neon为什么速度快 3. Neon基础概念 4. Neon的C语言接口 C语言程序中集成Neon ...

  7. 简单比较python语言和c语言的异同-Python快速入门之与C语言异同

    原标题:Python快速入门之与C语言异同 代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达 ...

  8. Go语言小程序开发快速入门——一、用Gin框架实现简单的信息获取

    下面主要介绍如何用Go语言的Gin框架把信息通过接口传到小程序前端 1.准备 (1)注册一个微信小程序 (2)下载微信开发者工具 (3)下载Go语言编辑器,配置Go语言环境 2.新建一个小程序项目 在 ...

  9. php风格goweb框架,go语言 web框架比较

    随着go语言在16年的爆发,各种开源web框架开始如雨后春笋一般的涌出,比较出名有beego,Martini,gin ,Macaron,Traffic,Revel, Goji等.本文笔者总结下目前go ...

最新文章

  1. 语义分割 | segnet 制作自己的数据,如何训练,如何测试,如何评价
  2. Spark PersistenceEngine持久化引擎与领导选举代理机制内核原理深入剖析-Spark商业环境实战...
  3. idea清理svn信息_IntelliJ IDEA SVN的账号修改 信息清除
  4. Java-IO-对接流
  5. 【Java】获取Java代码段运行毫秒数的策略
  6. 人生没有后悔药,云主机可以有“时光机”
  7. 计算机操作师初级理论知识试卷答案,[计算机操作员初级理论知识试卷1.doc
  8. 不用也要知道的几种算法(PHP版本)
  9. 如何直观的长时间统计Android应用的动态内存消耗
  10. Pod install 慢, pod update 慢, Cocoapods setup下载缓慢,手动解决方案
  11. ThreadLocal理解
  12. 计算机多媒体教室管理制度,新疆大学多媒体教室管理制度
  13. 乾颐堂现任明教教主(2014年课程)TCPIP协议详解卷一 第八节课笔记
  14. 由于授权协议中一个错误,远程计算机中断了会话。请重新跟远程计算机连接;或者跟服务器管理员联系。
  15. 自控力读书笔记 第九章 别读这章:“我不要”力量的局限性
  16. 200行Go代码实现自己的区块链——区块生成与网络通信
  17. 一个通证经济典型案例——移动广告矿机
  18. anyconnect免密码登录
  19. 推荐一款文件分享工具-文叔叔
  20. can口通信的软件测试,RT1052+8、CAN通信例程测试

热门文章

  1. MSYS2开发环境搭建
  2. Android 自定义模拟时钟控件
  3. STM32F4 使用SPI读取气压计MS5611的数据并转化为大气压强
  4. [Android6.0][MTK6737] MTK 编译环境搭建
  5. 胜意差旅管理 | 从OA变革到费控系统的企业报销体验
  6. Android 根目录和sdcard卡路径分析
  7. CSS字体font-family的正确选择方案
  8. [Swift]对UIView截图
  9. python编写米字格的步骤_1米字格制作步骤
  10. 制作电子书--txt转kindle