Uso simple de GORM

Uso básico de gorm

×font> http://gorm.book.jasperxu.com/ ×font> Documentos oficiales

Instalar

go get -u github.com/jinzhu/gorm

Conectar mysql

  • gorm connection mysql depende del controlador mysql, debe instalar el controlador mysql antes de conectarsegithub.com/go-sql-driver/mysql

  • Ejemplo de conexión individual

package database

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

var Db *gorm.DB

var Error error

func init() {
	Db, Error = gorm.Open("mysql", "admin:qwe123@/bilibili")
	if Error != nil {
		log.Fatal("database connect failed \n", Error.Error())
	}
	Db.LogMode(true)  // 打印sql语句
	Db.DB().SetMaxIdleConns(50)  // 设置连接池
	Db.DB().SetMaxOpenConns(50) // 设置最大连接数
	Db.DB().SetConnMaxLifetime(time.Hour)  // 设置最大连接超时
}

  • Para asegurar el progreso completo del proyecto, cuando el proyecto se inicializa, debemos asegurarnos de que la conexión de la base de datos sea normal. Cuando la conexión de la base de datos falla, puede utilizar log.Fatalel método para detener el proyecto.

Uso básico

"""
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| mid       | int(11)      | NO   | PRI | NULL    |       |
| following | int(11)      | NO   |     | NULL    |       |
| follower  | int(11)      | NO   |     | NULL    |       |
| name      | varchar(255) | YES  |     | NULL    |       |
| face      | varchar(200) | YES  |     | NULL    |       |
| leavel    | smallint(6)  | YES  |     | NULL    |       |
| sex       | varchar(255) | YES  |     | NULL    |       |
| sign      | varchar(255) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+
"""
  • Mesa de prueba

Operación simple


package main

import (
	"fmt"
	"fresh.com/database"
)

type User struct {
	Mid       int
	Following int
	Follower  int
	UserName  string `gorm:"Column:name"`
}

func (u User) TableName() string {
	return "user_info"
}

/*
1. 映射表的结构体的名将会被转换为表名,规则为:
	(1): 单数变复数,如:User -> users, 有些会变成es结尾,按照英文的语法. 你可以通过Db.SingularTable(true)来禁用这一规则
	(2): 大写变下划线, 如:UserDetails -> user_details
	(3): 为结构体制定表名, 给该结构体设置一个成员方法`TableName`, 返回值为string即可
	(4): 可以在查询的时候制定表名,如下所示"Table". 其余的时候该结构体的实例结构即可
	(5): 制定列名,在结构体里面制定tag"gorm:Column:<你的表的列名>"即可
*/
func main() {
	// 单条查询
	user := &User{}
	database.Db.Table("user_info").First(&user) // SELECT * FROM `user_info`   LIMIT 1
	fmt.Println(user.Mid)

	// 多条查询
	user_list := []User{}
	database.Db.Table("user_info").Limit(10).Find(&user_list) // SELECT * FROM `user_info`   LIMIT 10
	fmt.Println(user_list)

	// where 条件查询
	database.Db.Table("user_info").Where("mid=?", 102).Find(&user) // SELECT * FROM `user_info`  WHERE (mid=102)
	fmt.Println(user)

	// 执行原始的sql查询
	raws, err := database.Db.Raw("SELECT COUNT(*) FROM user_info").Rows()
	if err != nil {
		fmt.Println(err)
	}
	for raws.Next() {
		var mid int
		raws.Scan(&mid)
		fmt.Println(mid)
	}

	// 插入
	insert_user := User{
		Mid:       199624,
		Follower:  25,
		Following: 1234,
	}

	re := database.Db.Create(&insert_user).RowsAffected
	fmt.Println(re) // 如果插入成功,单挑插入返回1,失败则返回0

	// 更新
	database.Db.Table("user_info").Where("mid=?", 199624).Update("name", "ivy")
	database.Db.Model(&user).Where("mid=?", 199624).Update("name", "BOB")
}



Supongo que te gusta

Origin www.cnblogs.com/ivy-blogs/p/12737088.html
Recomendado
Clasificación