grom (一)连接Mysql数据库

数据库的连接

1. 代码预览

package main

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

type Student struct {
	ID uint
	Name string
	Age uint8
}
// 设置 `Student` 的表名为 `student`
func (Student) TableName() string {
	return "student"
}

func main() {
	/* 1. 创建一个数据库连接对象db */
	dsn := "root:123456@tcp(127.0.0.1:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil{
		panic(err)
	}
	/* 2. 执行查询工作 */
	var studentList []Student
	db.Find(&studentList)
	for _, student := range studentList {
		fmt.Println(student)
	}
	/* 3. 进行条件查询 */
	var student1 Student
	db.Where("id=?", 2).First(&student1)
	fmt.Println(student1)
}

2. 使用步骤

2.1 引入 grom

go get -u gorm.io/gorm

2.2 使用gorm.Open 打开数据库

dsn := “user:password@tcp(ip:port)/tableName?charset=utf8mb4&parseTime=True&loc=Local”
db, err := gorm.Open(mysql.Open(dns), &gorm.Config{})

举例:

/* 1. 创建一个数据库连接对象db */
dsn := "root:123456@tcp(127.0.0.1:3306)/users?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

注意:在mysql.Open()方法中,mysql 指的是"gorm.io/driver/mysql"

2.3 创建一个结构体和数据表字段对应

现在我们有一个叫做student的表在test数据库中,字段如下
在这里插入图片描述
那么我们可以使用结构体来映射数据表

type Student struct {
	ID uint
	Name string
	Age uint8
}
// 设置 `Student` 的表名为 `student`
func (Student) TableName() string {
	return "student"
}

注意:如果不使用func (Student) TableName()执行查询会提示如下错误

Error 1146: Table 'test.students' doesn't exist

可见gorm默认Student 对应 students 数据库。 那有小伙伴可能会问了如果定义了type Students struct 会不会对应 studentss呢?这里帮大家试过了,Students 也对应 students

2.4 执行查询工作
  1. 查询所有

db.Find([]Students) // Find会把查询到的结果放到,传给他的列表中

var studentList []Students
db.Find(&studentList)
for _, student := range studentList {
	fmt.Println(student)
}

在这里插入图片描述
db.Find([]Students) 相当于完成了Select * From student操作

  1. 条件查询

db.Where(“条件字段=?”, 值).First(&student)

var student1 Student
db.Where("id=?", 2).First(&student1)
fmt.Println(student1)

在这里插入图片描述

db.Where(“条件字段=?”, 值).First(&student)相当于完成了Select * From student Where 条件字段=值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值