Golang Beego使用Gorm操作数据库

一、Gorm 官方文档

Gorm 官方文档: https://v1.gorm.io/zh_CN/docs/

二、Golang Beego使用grom

1、安装gorm

go get -u github.com/jinzhu/gorm

2、Golang Beego中使用 Gorm 连接数据库

在 models 下面新建 db.go ,建立数据库链接

package models
import ( 
	"github.com/jinzhu/gorm" 
	_ "github.com/jinzhu/gorm/dialects/mysql" 
)	
var DB *gorm.DB
func init() {
   
DB,_=gorm.Open("mysql","root:123456@/beegodbcharset=utf8&parseTime=True&loc=L ocal") 
}

3、关闭数据库链接

找到 main.go 引入 models 模块, 在 main 方法执行完毕后关闭数据库链

package main 
import ( 
	"demo/models"
 	"github.com/astaxie/beego"
 	 )
func main() {
    
 	beego.Run() 
	defer models.DB.Close() 
}

4、定义操作数据库的模型

Gorm 官方给我们提供了详细的说明:https://v1.gorm.io/zh_CN/docs/models.html

虽然在 gorm 中可以指定字段的类型以及自动生成数据表,但是在实际的项目开发中,我们 是先设计数据库表,然后去实现编码的。

在实际项目中定义数据库模型注意以下几点:
1、结构体的名称必须首字母大写 ,并和数据库表名称对应。
例如:表名称为 user 结构体 名称定义成 User,表名称为 article_cate 结构体名称定义成 ArticleCate

2、结构体中的字段名称首字母必须大写,并和数据库表中的字段一一对应。

例如:下面结 构体中的 Id 和数据库中的 id 对应,Username 和数据库中的 username 对应,Age 和数据库中 的 age 对应,Email 和数据库中的 email 对应,AddTime 和数据库中的 add_time 字段对应

package models
type User struct {
   
	Id       int
	Phone    string
	Password string
	AddTime  int
	LastIp   string
	Email    string
	Status   int
}
func (User) TableName() string {
   
	return "user"
}

3、默认情况表名是结构体名称的复数形式。

如果我们的结构体名称定义成 User,表示这个 模型默认操作的是 users 表。
4、我们可以使用结构体中的自定义方法 TableName 改变结构体的默认表名称

func (User) TableName() string {
    
	return "user" 
}

表示把 User 结构体默认操作的表改为数据库的 user 表

更多模型定义请查看网址:https://v1.gorm.io/zh_CN/docs/conventions.html

三、Beego GORM CURD

1、创建

增加成功后会返回刚才增加的记录

user := models.User{
    
	Username: "gorm",
	Age: 18, 
	Email: "gorm@qq.com", 
}
models.DB.Create(&user)

2、查询

根据主键查询第一条记录

 user := models.User{
   }
 db.First(&user)

根据主键查询最后一条记录

 user := models.User{
   }
 db.Last(&user)

查询所有的记录

 users := []models.User{
   }
 db.Find(&users)

查询指定的某条记录(仅当主键为整型时可用)

 user := models.User{
   }
 db.First(&user, 10)

或者

 user := models.User{
   Id:10}
 db.Find(&user)

Where 条件

// 获取第一个匹配的记录
db.Where("name = ?", "jinzhu").First(&user)
 SELECT * FROM users WHERE name = 'jinzhu' limit 1;

// 获取所有匹配的记录
db.Where("name = ?", "jinzhu").Find(&users)
 SELECT * FROM users WHERE name = 'jinzhu';

// <>
db.Where("name <> ?", "jinzhu").Find(&users)
 SELECT * FROM users WHERE name <> 'jinzhu';

// IN
db.Where(
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值