暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GORM与数据库(单复数)表结构之间的映射

李田路口 2020-01-18
416

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


                文章转载自李田路口,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论