go使用GORM *** 作mysql

go使用GORM *** 作mysql,第1张

1.简介

GORM是go语言的一个orm框架,是对开发人员友好的 Golang ORM 库,简化了ORM库的 *** 作。GORM解决了面向对象和关系数据库相互匹配的问题。
GORM目前只支持MySQL、PostgreSQL、Sqlite3数据库。


2.使用GORM    1).安装mysql驱动

    go get -u github.com/go-sql-driver/mysql(mysql驱动)

   2).安装GORM

    go get -u github.com/jinzhu/gorm
    

   3).数据库连接

先导入驱动和gorm

import (
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
)
   4).使用navicat创建t_user表

   5).创建数据表对应的结构体

gorm.Model是GORM自带的模型,里面包含的字段有 ID,CreatedAt, UpdatedAt, DeletedAt字段

//用户结构体
type Users struct {
	// 将字段 `ID`, `CreatedAt`, `UpdatedAt`, `DeletedAt` 注入到 `User` 模型中
	//我这里没使用
	//gorm.Model
	Id       int64  `db:"id"`
	Username string `db:"username"`
	Password string `db:"password"`
}
   6).数据库连接

注意: 为了正确的处理 time.Time ,你需要包含 parseTime 作为参数

var db *gorm.DB

func init() {
	//gorm.Open("数据库类型", "用户名:密码@tcp(IP:port)/数据库名")
	//注意: 为了正确的处理 time.Time ,你需要包含 parseTime 作为参数
	d, err := gorm.Open("mysql", "root:123456@tcp(192.168.0.109:30068)/go_test?charset=utf8&parseTime=True&loc=Local")
	if err != nil {
		panic(err)
	}
	db = d
}

3.增删改查    1).新增
user := User{Username: "大旺", Password: "123456"}
//指定表t_user   要用&user
db.Table("t_user").Create(&user)

   2).查询

    查询第一个数据,按主键排序

   var user User
   //指定表t_user 结构体User和表t_user名称不同需要指定
   db.Table("t_user").First(&user)
   //获取最后一条记录,按照主键排序
   //db.Table("t_user").Last(&user)
   fmt.Printf("user:%#v\n",&user)

    查询全部

var users []User
	//指定表t_user 结构体User和表t_user名称不同需要指定
	db.Table("t_user").Find(&users)
	fmt.Printf("user:%#v\n",&users)

    通过主键查询

	var user User
	//指定表t_user 结构体User和表t_user名称不同需要指定
	// 通过主键进行查询 (仅适用于主键是数字类型)
	db.Table("t_user").First(&user, 10)
	fmt.Printf("user:%#v\n",&user)


    通过where条件查询

	var users []User
	//指定表t_user 结构体User和表t_user名称不同需要指定
	db.Table("t_user").Where("username LIKE ? AND password = ?", "%旺%", "1").Find(&users)
	fmt.Printf("user:%#v\n",&users)


    其他查询

// 结构体
var user User
// SELECT * FROM t_user WHERE username= "大旺" AND password= “123456” LIMIT 1;
db.Table("t_user").Where(&User{Username: "大旺", Password: “123456”}).First(&user)

// Map
var users []User
// SELECT * FROM t_user WHERE username= "大旺1" AND password= “1”;
db.Table("t_user").Where(map[string]interface{}{"username": "大旺1", "password": 1}).Find(&users)

// 主键的切片
var users []User
//SELECT * FROM t_user WHERE id IN (1, 2, 3);
db.Table("t_user").Where([]int64{1, 2, 4}).Find(&users)

   3).修改

    先查询后修改
db.Table("t_user").Save(&user)

	var user User
	db.Table("t_user").First(&user, 10)
	fmt.Printf("查到的user:%#v\n",&user)
	user.Password="666666666"
	db.Table("t_user").Save(&user)
	fmt.Printf("新增后的user:%#v\n",&user)


    根据where条件修改

var user User
db.Table("t_user").Where("id = ?", 10).Updates(map[string]interface{}{"username": "更新"})

   4).删除
    //删除存在的一条
	 db.Delete(&user)
	 
	//根据条件删除
	db.Table("t_user").Where("id = ?", 10).Delete(User{})
	// delete from t_user where id=10;
	
	//根据条件删除
	db.Table("t_user").Delete(User{}, "id = ?", "10")
	// delete from t_user where id=10;

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存