Gorm+mysql

package main

//gorm demo1    //连接不同的数据库要使用不同的驱动
import (
	"fmt"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)

type UserInfo struct {
	ID     int
	Name   string
	Gender string
	Hobby  string
}

func main() {
	db, err := gorm.Open("mysql", "root:20030303@tcp(localhost:3306)/b1?charset=utf8mb4&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	//创建表 自动迁移(把结构体和数据表进行对应)
	db.AutoMigrate(&UserInfo{})

	//创建记录
	//u1 := UserInfo{1, "假紫颜", "女", "飞机"}
	//db.Create(&u1)

	//查询

	var u UserInfo
	db.First(&u) //查询表中第一条数据保存到u中
	fmt.Printf("u:%#v\n", u)

	//更新
	db.Model(&u).Update("hobby", "受宠")
	db.First(&u)
	fmt.Printf("u:%#v\n", u)

	//删除
	db.Delete(&u)
	db.First(&u)
	fmt.Printf("u:%#v\n", u)
}
package main

import (
	"database/sql"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	"time"
)

type User struct {
	gorm.Model
	Name         string
	Age          sql.NullInt64 `gorm:"column:user age"` //零值类型
	Birthday     *time.Time
	Email        string  `gorm:"type:varchar(120);unique_index"`
	Role         string  `gorm:"size:255"`        //字段大小255
	MemberNumber *string `gorm:"unique;not null"` //设置会员号唯一且不为空
	Num          int     `gorm:"AUTO_INCREMENT"`  //设置为自增类型
	Address      string  `gorm:"index:addr"`      //给字段创建索引
	IgnoreMe     int     `gorm:"-"`
}

type N struct {
	Name string
}

func (User) TableName() string {
	return "User_funcname"
} //使用User{}映射创建的表的名字会使用这个函数的返回值的string

func main() {

	gorm.DefaultTableNameHandler = func(db *gorm.DB, defaultTableName string) string {
		return "SMS_" + defaultTableName
	} //修改默认的表名的前缀

	db, err := gorm.Open("mysql", "root:20030303@(localhost:3306)/b1?charset=utf8mb4&parseTime=true&loc=Local")
	if err != nil {
		panic(err)
	}
	defer db.Close()

	db.SingularTable(true) //禁用复数  就是创建的时候的表的名字后面会跟s  这是禁用这个选项

	db.AutoMigrate(&User{})
	db.AutoMigrate(&N{})
	//使用User结构体创建名字为moxu的表
	//db.Table("moxu").CreateTable(&User{})
}

Gorm 模型定义

定义模型

type User struct {
	ID   int64
	Name string
	Age  int64
}

package main

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

// 1.定义模型

type User struct {
	ID   int64
	Name string
	Age  int64
}

func main() {
	//连接mysql数据库
	//	db, err := gorm.Open("mysql", "root:20030303@(localhost:3306)/b1?charset=utf8mb4&parseTime=True&loc=Local")
	db, err := gorm.Open("mysql", "root:20030303@(localhost:3306)/b1?charset=utf8mb4&parseTime=true&loc=Local")
	if err != nil {
		panic(err)
	}
	defer db.Close()
	//2.把模型与数据库中的表对应起来  把模型的变化映射到数据库中的数据表
	db.AutoMigrate(&User{})

	//3.创建
	u := User{ //在代码层面创建的一个User对象
		ID:   0,
		Name: "moxu",
		Age:  18,
	}
	fmt.Println(db.NewRecord(&u)) //判断主键是否为空  主键为空代表还没有在数据库中去存入   为空返回true  不为空返回false
	db.Create(&u)                 //在数据库中创建了一条moxu 18的记录
	fmt.Println(db.NewRecord(&u))
}

Gorm创建记录及字段默认值相关

利用tag进行默认值的设置

字段 type `gorm:"default 'moxu'"`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值