美文网首页
Go-Web(数据处理篇—gorm)

Go-Web(数据处理篇—gorm)

作者: 秃头小公主 | 来源:发表于2020-11-19 15:00 被阅读0次

今天这版来说说数据处理,其实处理有很多种方法比如放到缓存,巴拉巴拉。。。。但是我这就说gorm,因为我就用到这了个,以后再用到别的再说别的,保姆式记录日志~


1.准备工作
(1)拥有一个数据库(我说一下我的流程,有的略过)
mysql下载安装->mysql配置->navicat下载安装->创建链接->创建数据库
mysql安装配置:https://www.cnblogs.com/winton-nfs/p/11524007.html(写的可明白了)
navicat:找个破解版的就行
创建链接:打开navicat左上角链接->选择mysql->填写连接名、主机、端口。。。->建表就完事了

2.链接数据库
现在goland的命令行输入:go get -u github.com/jinzhu/gorm(下载包用的)
接下来上代码

import (
    "fmt"
    "github.com/jinzhu/gorm"
    _ "github.com/jinzhu/gorm/dialects/mysql"
)
var db *gorm.DB
func Init() {
    var err error
    db, err = gorm.Open("mysql", "用户名:密码@tcp(主机:端口)/数据库名?charset=utf8")
    if err!=nil{
        panic(err)
    }
    fmt.Println("success")
}

3.增删改查操作*
先新建一个表(自行解决),再建一个和表对应的结构体,我把这个结构体放在了一个名为data的文件夹下面(user.go)

type user struct {//user用小写来实现私有
    Id int `gorm:"primary_key" json:"id"`
    Username string `gorm:"username"`
    Phone string  `gorm:"phone"`
}
func New() user { //创建一个私有user的方法(对user的简单封装)
    return user{}
}
func News()  user{//创建多个私有user的方法
    return user{}
}

(1)增

func main() {
    Init()//连接数据库(方法代码如上)
    u:=data.New()//创建user结构体
    u.Id=2 
    u.Username="mengyu"
    u.Phone="222"
    db.Create(u) //赋值之后,增加他们
}

(2)删

func main() {
    Init()
    db.Delete(u) //删除全部数据
    u:=data.New()
    db.Delete(&u, "phone LIKE ?", "%3%")//按条件删除phone有3的数据
}

(3)改

Init()
    u:=data.New()
    u.Id=1//id=1
    u.Username="mm"//name=mm
    db.Save(&u)//更新为以上信息
    db.Model(&u).Where("username = ?", "mm").Update("phone", "1111")//把username=mm对应的phone改为1111
    db.Model(&u).Updates(map[string]interface{}{"username": "hello", "phone": “18”})//map更新:更新所有
    db.Model(&u).Where("id = ?", 1).Updates(map[string]interface{}{"username": "mengyu", "phone": "11"})//加入条件的map更新

(4)查

  • 单个数据的查询
func main() {
    Init()//连接数据库(方法代码如上)
    u:=data.New()//创建user结构体
    db.First(&u)//查询第一条数据
    db.Last(&u)//查询最后一条数据
    db.Where("id=?", "1").Find(&u)//根据某个条件查询一个值

}
  • 多个数据的查询
func main() {
    us:=data.News()
    db.Find(&us)//查询所有,需要用切片、数组等装
    db.Where("phone <= ?", 500).Find(&us)//比较查询
    db.Where("phone > ? AND phone < ?",0,500).Find(&us)//一定范围内查询

    offset := 2    // 从第几个开始查, 和limit 配合在一起可以实现分页功能
    limit := 5   // 要查多少个数据
    db.Offset((offset-1) * limit).Limit(limit).Find(&us)
    for i :=0;i< len(us);i++{
        fmt.Println(us[i])
    }
//注意:Offset 是跳过数据的, 所以要查询第一页要写-1, 
//写Offset = 1 的时候会跳过第一页
//Offset * Limit ,就跳过的要查询的数据了

相关文章

网友评论

      本文标题:Go-Web(数据处理篇—gorm)

      本文链接:https://www.haomeiwen.com/subject/lxlxiktx.html