go中的GORM的原生sql

go中的GORM的原生sql,第1张

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)
	}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994808.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存