Gormとデータベース(単一複素数)テーブル構造間のマッピング

8384 ワード

Gorm接続MySQL:
import (
   _ "github.com/go-sql-driver/mysql"
   "github.com/jinzhu/gorm"
)

type User struct {
   Id   int    `json:"id"`
   Name string `json:"name"`
   Age  int    `json:"age"`
}

func GormTest() {
   dsn := username + ":" + password + "@tcp(" + addr + ")/" + datebase + "?charset=utf8&parseTime=true&loc=Local"
   var err error
   DB, err := gorm.Open("mysql", dsn)
   if err != nil {
      panic("MySQL conn failed:" + err.Error())
   }
   //DB.SingularTable(true)
}

データベースには複数のテーブル構造があります.
データベースには複数のテーブル構造usersがあり、コードにはuserまたはusers構造体が定義され、いずれも操作できます.
DB.Create(&User{Name: "Li", Age: 5}) //  
DB.Create(&Users{Name: "Li", Age: 5}) //  

データベースには単一テーブル構造があります.
データベースには単数テーブル構造userがあり、コードにはuserまたはusers構造体が定義されており、操作できません.
DB.Create(&User{Name: "Li", Age: 5}) //Table 'test.users' doesn't exist
DB.Create(&Users{Name: "Li", Age: 5}) //Table 'test.users' doesn't exist

データベースの単一テーブル構造の問題を解決するには、次の手順に従います.
データベース接続を取得するときに、次の構成を追加します.
DB.SingularTable(true)

この場合、コード構造体の単複数とデータベース表リストの複数は対応しなければならない.単対単、複対複:
DB.Create(&User{Name: "Li", Age: 5}) //  
DB.Create(&Users{Name: "Li", Age: 5}) //Table 'test.users' doesn't exist

コードによるデータベース表構造の作成:
SingularTableの構成を加えず、コードによってテーブルを作成し、構造体が単数で複数であるにもかかわらず、生成されたテーブルは複数である.
 DB.AutoMigrate(&User{}) //  users
 DB.AutoMigrate(&Students{}) //  students

SingularTableの構成を加えて、コードによって表を作成して、構造体の単数は単数表を生成して、構造体の複素数は複素表を生成します:
 DB.AutoMigrate(&User{}) //  user
 DB.AutoMigrate(&Students{}) //  students

公衆番号:李田交差点