zoukankan      html  css  js  c++  java
  • Gorm与数据库(单复数)表结构之间的映射

    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
    

    公众号:李田路口

  • 相关阅读:
    给 admin 新建的 hdfs 文件的权限
    linux 常用命令
    如何快速把hdfs数据动态导入到hive表
    Kylin查询性能低下原因分析
    hadoop+hive使用中遇到的问题汇总
    hadoop 突然断电数据丢失问题
    用puthivestreaming把hdfs里的数据流到hive表
    创建 kylin Module/Cube
    【MySQL】MySQL的索引
    【MySQL】MySQL的约束
  • 原文地址:https://www.cnblogs.com/dubinyang/p/12129923.html
Copyright © 2011-2022 走看看