go使用GORM操作mysql

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;
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值