栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

go中的GORM的原生sql

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

go中的GORM的原生sql

1.原生 SQL

    数据库初始化

var db *gorm.DB

func init() {
   //gorm.Open("数据库类型", "用户名:密码@tcp(IP:port)/数据库名")
   //注意: 为了正确的处理 time.Time ,你需要包含 parseTime 作为参数
   d, err := gorm.Open("mysql", "root:xxxx@tcp(ip:port)/go_test?charset=utf8&parseTime=True&loc=Local")
   if err != nil {
   	panic(err)
   }
   db = d
}
//用户结构体
type User struct {
   // 将字段 `ID`, `CreatedAt`, `UpdatedAt`, `DeletedAt` 注入到 `User` 模型中
   //gorm.Model
   Id       int64  `db:"id"`
   Username string `db:"username"`
   Password string `db:"password"`
}

    通过Exec操作原生sql

db.Exec("update t_user set password=? WHERe id = ?", "6666666",8)

    通过RAW操作原生sql

	var user User
	db.Raw("SELECT id,username, password FROM t_user WHERe id = ?", 8).Scan(&user)
    fmt.Printf("%+v",user)


2.row&rows

    先生成row,然后再从row中取值

    var username string
    var password string
	row := db.Table("t_user").Where("id = ?", 8).Select("username, password").Row()
	row.Scan(&username, &password)
	fmt.Printf("username:%v n",username)
	fmt.Printf("password:%v n",password)

Select后面的值要和数据库一直
row.Scan后面的变量名可以不一致

    先生成rows,然后再从rows中循环取值

rows, _ := db.Table("t_user").Select("username, password").Rows()
	defer rows.Close()

	for rows.Next() {
		var user User
		db.ScanRows(rows, &user)
		fmt.Printf("user:%v n",user)
	}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906006.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号