GORM
GORM : Object Relational Mapping
对象:程序中的对象、实例,如结构体
关系:关系数据库,例如MySQL
数据表;结构体
数据行:结构体实例
字段:结构体字段
ORM的优点在于提高开发效率
缺点:牺牲执行能力,牺牲灵活性以及弱化SQL能力
11.1 在本地或远程启动并连接数据库
11.1.1 启动服务器和Docker
ssh root@xxx
systemctl start docker //启动docker
11.1.2 使用容器启动MySQL
docker run -d -p 80:80 docker/getting-started //启动docker
docker run --name mysql -e MYSQL_ROOT_PASSWORD=xxx, -p 3301:3306 -d mysql //启动容器
docker exec -it 8b4545118c60 /bin/bash //进入容器
mysql -u root -p //
mysql -u root -p
Enter password: //输入密码则会看到连接成功
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 8.0.28 MySQL Community Server - GPL
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
11.1.3 数据库操作
CREATE DATABASE db1; //创建数据库
show databases; //查看看数据库是否创建成功
use db1; //使用数据库
show tables;//查看数据库中的数据表
11.2 使用GORM连接数据库
import (
"github.com/jinzhu/gorm" //引入gorm
_ "github.com/jinzhu/gorm/dialects/mysql" //匿名引入mysql驱动,不直接使用,而是使用其内部一些初始化函数
)
//定义一个结构体(在数据库中对应一个表)
type UserInfo struct {
ID int
Name string
Gender string
Hobby string
}
func main() {
//连接数据库
//注意书写用户名、密码、主机名称、端口号以及数据库名称
db, err := gorm.Open("mysql", "root:xxx@tcp(xxx:3301)/db1?charset=utf8mb4&parseTime=True&loc=Local")
if err != nil {
panic(er