登录
原创

gorm(1)数据库连接与CURD

专栏gorm
发布于 2021-04-08 阅读 32
  • Go
原创

导入包

	"gorm.io/gorm"
	"gorm.io/driver/mysql"

连接

	dsn := "root:root@tcp(127.0.0.1:3306)/car"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

使用连接池

	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
	sqlDB.SetMaxIdleConns(10)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	sqlDB.SetMaxOpenConns(100)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	sqlDB.SetConnMaxLifetime(time.Hour)

表迁移

代码

	db.AutoMigrate(&User{})

模型语句

type User struct {
	Name     string
	Age      int
	Birthday time.Time
	Address  string
}

插入数据

	user := User{
		Name: "silk",
		Age: 28,
		Birthday: time.Now(),
		Address: "suzhou",
	}
	db.Create(user)

指定插入字段以及指定忽略字段

	user.Name = "java0904"
	//指定字段插入
	db.Debug().Select("Name", "Age").Create(&user)

	user.Name = "xiaoyang"

	//创建记录并更新未给出的字段
	db.Debug().Omit("Address","Age").Create(&user)

通过使用Debug()方法可以在控制台打印出在数据库执行的sql语句,打印语句如下


2021/04/08 16:28:48 /Users/java0904/goProject/gorm/demo01/main.go:51
[0.401ms] [rows:1] INSERT INTO `users` (`name`,`age`) VALUES ('java0904',28)

2021/04/08 16:28:48 /Users/java0904/goProject/gorm/demo01/main.go:56
[0.691ms] [rows:1] INSERT INTO `users` (`name`,`birthday`) VALUES ('xiaoyang','2021-04-08 16:28:48.796')


此时查看数据表信息

mysql> desc users;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| name     | longtext    | YES  |     | NULL    |       |
| age      | bigint(20)  | YES  |     | NULL    |       |
| birthday | datetime(3) | YES  |     | NULL    |       |
| address  | longtext    | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> select * from users;
+----------+------+-------------------------+---------+
| name     | age  | birthday                | address |
+----------+------+-------------------------+---------+
| silk     |   28 | 2021-04-08 08:28:48.797 | suzhou  |
| java0904 |   28 | NULL                    | NULL    |
| xiaoyang | NULL | 2021-04-08 08:28:48.797 | NULL    |
+----------+------+-------------------------+---------+
3 rows in set (0.00 sec)

完整代码

package main

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"log"
	"time"
)
import _ "github.com/go-sql-driver/mysql"

var DB *gorm.DB

type User struct {
	Name     string
	Age      int
	Birthday time.Time
	Address  string
}

func main() {
	dsn := "root:root@tcp(127.0.0.1:3306)/car"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Fatal(err)
	}
	sqlDB, err := db.DB()

	if err != nil {
		log.Fatal(err)
	}
	//
	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
	sqlDB.SetMaxIdleConns(10)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	sqlDB.SetMaxOpenConns(100)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	sqlDB.SetConnMaxLifetime(time.Hour)
	//数据表迁移,新建一个表,默认表名会加上复数
	db.AutoMigrate(&User{})
	user := User{
		Name:     "silk",
		Age:      28,
		Birthday: time.Now(),
		Address:  "suzhou",
	}
	db.Create(user)
	user.Name = "java0904"
	//指定字段插入
	db.Debug().Select("Name", "Age").Create(&user)

	user.Name = "xiaoyang"

	//创建记录并更新未给出的字段
	db.Debug().Omit("Address", "Age").Create(&user)

}

评论区

眉上的汗水,眉下的泪水,你总要选择一样

0

0

0