gorm与数据库初见

       之前对数据库没有真的去上手操作,近期突然想起来了,虽然搭环境稍微有点麻烦,但总得是要跳出舒适圈的。

        首先关于Navicat的使用,感觉用户体验感还是不错的。

        但是首先要安装MySQL,就去到官网download,然后安装完成。

        下载了Navicat,然后试用一下,首先是要测试连接一下MySQL,当环境搭配好之后,输入密码就可以连接了。随后新建一个自己的数据库。

 

db , err := gorm.Open("mysql","root:123456@/ginclass?charset=utf8&parseTime=True&loc=Local")
 //charset -> 字符串编码
 //parseTime -> 是否格式化时间
 //loc -> 时区(本地Local)
 if err!=nil {
     panic(err)
 }else {
     fmt.Println("Connect Success!")
 }

 在连接完成后,接下来是创建表,(orm基础上的)

使用的是AutoMigrate(),主要作用就是自动迁移功能,其中要传一个结构体的实例指针地址

// HelloWorld 要创建一个表:
type HelloWorld struct{
    gorm.Model // 主键
    Name string
    Age int
    Class string
}


func main(){

...

 db.AutoMigrate(&HelloWorld{})
 //自动迁移功能(如不存在会自动创建一个表)传过来的是  结构体HelloWorld实例的指针地址

}

 于是再看Navicat的时候,刷新后:

因为:db.AutoMigrate(&HelloWorld{})

   出现了一张表

接下来就是增删改查:

增添数据:Create()

db.Create(&HelloWorld{  //创建
    Name: "dog",
    Age:60,
    Class: "class 8",
})

 刷新后:

 接下来是查找:

var shoulder HelloWorld // 创建一个实例shoulder来承接查询目标
 var slice [] HelloWorld
 db.First(&shoulder) //查找
 db.First(&shoulder,"Name = ?","dog") //条件查找

 db.Find(&slice) // 查找shoulder中所有的信息 ,但是Find 承接的应该是个切片对象
 db.Find(&slice,"Age > ?","21") // Age < 21 的信息

 fmt.Println(slice)
 fmt.Println(shoulder)、

//db.Find(&slice,"Age > ?","21")与db.Where("Age > ?","21").Find(&slice)是相等的(写法不同)  

 可以看出,First()是查找一条数据,而Find()则是查找所有满足的数据

db.Where("id = ?",14).First(&HelloWorld{}).Update("name","cat") //更改单条数据
db.Where("id = ?",17).First(&HelloWorld{}).Updates(HelloWorld{
    Name:"CloudyTender" ,
    Age: 1000,
}) //更改多条数据
db.Where("id = (?)",[]int{17,16}).Find(&[]HelloWorld{}).Updates(HelloWorld{
        Name:"CloudyTender" ,
        Class:"image",
        Age: 1000,
    }) //更改多条数据

删除功能:Unscoped()的目的是在数据库中真正删除掉

db.Where("id = ?",19).Unscoped().Delete(&HelloWorld{})

 目前是单纯的增删改查和环境的熟悉和搭建,后续会继续学一下数据库的相关。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值