go 学习 第二十六章 Go语言 gorm 环境搭建

1. window 下 cmd 打开 命令窗口

 ①   运行如下命令:

go get github.com/jinzhu/gorm   // 核心库
go get github.com/go-sql-driver/mysql   //运行驱动包

  ② 数据库链接

db, err := gorm.Open("mysql", "db_username:db_password@/db_name?charset=utf8&parseTime=True&loc=Local")
	defer db.Close()
	if err != nil {
		panic(err)
	}

	defer db.Close()

 ➂ 连接数据库,并创建表,插入一条数据的示例

   

package main

import (
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

type User struct {
	gorm.Model
	Name string `gorm:"varchar(20); not null"`
	Price int `gorm:" not null"`
}
func main() {
	db, err := gorm.Open("mysql", "root:root@/gormdb?charset=utf8&parseTime=True&loc=Local")
	defer db.Close()
	if err != nil {
		panic(err)
	}

	defer db.Close()

	//自动生成数据库表 ,生成的表明默认是struct名称的复数形式。如:user -》users
    // 如果不想是复数形式,需设定:
    // db.SingularTable(true) 
    db.SingularTable(true)
	db.AutoMigrate(&User{})

	// 插入数据
	db.Create(&User{Name:"chenyun",Price:12})

	// 查询数据
	//查询 一条记录, 找出id 为 5 的记录
	var user User
	db.First(&user,5)
	fmt.Println(user)
	//查询 一条记录, 找出name 为 chenyun6  且 price 为1000 的记录
	var user2 User
	db.First(&user2,"name = ? and Price = ?","chenyun6",1000)
	fmt.Println(user2)

	//改
	var user3 User
	db.Model(&user3).Where("name =? and price = ?","chenyun6" ,129).Update("Price",1000)
	fmt.Println(user3)

	//删除 数据库中如果有deleteAt 字段 执行删除时会执行软删除,
	  // 即, 只会将deleteAt 更新上相应的时间。
	  //再 对表里的数据 查询,修改时 默认 仅会找 deleteAt为空的记录。
	var user4 User
	db.Delete(&user4,"price = ?",122222)

	// 如果 加上 Unscoped字段  会进行硬删除,delete 操作。
	db.Unscoped().Delete(&user4,"price = ?",122222)

}

  注意 : struct 字段中 ,只有首字母大写的字段 才被人做为  要 映射到 表中 的列。

               如果在 gorm 的tag  中没有指定列名。将会遵循 蛇形命名方式。

                如 : CreateAt  字段映射到  表中是 :  create_at

你可能感兴趣的:(go)