【GoCN酷Go推荐】postgresql ORM 框架 go-pg系列(二)

目录

2.1 结构体标签

2.2 SQL命名惯例

2.3 表名

2.4 列名

2.5 丢弃未知列

3.1 普通占位符

3.2 命名占位符

3.3 PostgreSQL 标识符和禁用引号

3.4 PostgreSQL IN语句

3.5 PostgreSQL Arrays数组

3.6 全局数据库占位符

在上一节的文章中(这里需要把上个文章的链接帖下TODO:),我们学会了go-pg的基本操作,创建和删除数据库表,相关的增删改查操作等,今天我们来进一步了解下ORM框架基础、模型(model)、SQL占位符的知识。

一、ORM框架简介

对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序中的对象自动持久化到关系数据库中。

那对象和数据库是如何映射的呢?

数据库 面向对象的编程语言
表(table) 类(class/struct)
记录(record,row) 对象(object)
字段(field,column) 对象属性(attribute)

举一个具体的例子,来理解 ORM:

CREATE TABLE `User` (`Name` text, `Age` integer);
INSERT INTO `User` (`Name`, `Age`) VALUES ("Tom", 18);
SELECT * FROM `User`;

第一条 SQL 语句,在数据库中创建了表 User,并且定义了 2 个字段 NameAge;第二条 SQL 语句往表中添加了一条记录;最后一条语句返回表中的所有记录。

如果采用ORM框架来创建表User,如下:

type User struct {
    Name string
    Age  int
}

pg.CreateTable(&User{})

ORM 框架相当于对象和数据库中间的一个桥梁,借助 ORM 可以避免写繁琐的 SQL 语言,仅仅通过操作具体的对象,就能够完成对关系型数据库的操作。

二、定义模型Model

对于每个 PostgreSQL 表,您需要定义一个相应的 Go 结构体(模型)。go-pg 将导出的结构体字段映射到数据库表列,并忽略未导出的字段。

2.1 结构体标签

<
示例 作用
tableName struct{} pg:"table_name" 覆盖默认表名
tableName struct{} pg:"alias:table_alias" 覆盖默认表别名。
tableName struct{} pg:"select:view_name" 覆盖 SELECT 查询的表名。
tableName struct{} pg:",discard_unknown_columns"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值