Back

go - from rails to go , gorm

发布时间: 2021-09-08 23:00:00

gorm : gorm.io

特别超级非常简单

安装

2044 go get -u gorm.io/gorm
2045 go get -u gorm.io/driver/mysql

一段代码:

package main

import (
  "gorm.io/gorm"
  "gorm.io/driver/mysql"
  "fmt"
  "time"
)

type Book struct {
  gorm.Model   // 加不加都行.加了之后,就有软删除的功能,不建议加. 
  ID uint
  Title string
  Author string
  Name string
  CreatedAt time.Time
}

func main(){
  dsn := "root:666666@tcp(127.0.0.1:3306)/study_rails?charset=utf8mb4&parseTime=true&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})

  if err != nil {
    fmt.Println(err)
    panic("failed")
  }
  db.AutoMigrate(&Book{})
  book := Book{ Title: "hi 中文Go", Author: "dashi", Name: "gogogo!"}
  result := db.Create(&book)
  fmt.Println(result, book.ID)

  var find_book Book
  db.Last(&find_book)
  fmt.Println(find_book)

  var books []Book
  db.Where("author like ?", "das%").Find(&books)
  for i,e := range books {
    fmt.Println("=== i", i, "e: ", e)
  }

  db.Limit(3).Where("author like ?", "%as%").Find(&books)
  for i,e := range books {
    fmt.Println("=== i", i, "e: ", e)
  }

  find_book.Author = "大师, 略略"
  db.Save(&find_book)

  var delete_book Book
  // 这里会删掉第一个记录.
  db.First(&delete_book)
  fmt.Println("== before delete..", delete_book)
  db.Delete(&delete_book)



}

注意:

声明struts ( model )的时候, model 中的属性都是大写开头,例如 Title, Author ,

id列用ID

对应的数据库中, table名称是 小写 books, my_books,  table的column命名也是一样, author_name ....

否则会映射不到.

Back