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

公众号:李田路口

Gorm与数据库(单复数)表结构之间的映射的更多相关文章

  1. 通过EA导入数据库存在表结构并生成文档

    通过EA导入数据库存在表结构并生成文档   慕课网,程序员升职加薪神器,点击免费学习 目录[-] 导入数据源,表结构 生成表结构的文档 Enterprise Architect 是超级强大项目管理功能 ...

  2. 导入导出Mysql数据库、表结构、表数据

    由sql文件导入 mysql -uusername -ppwd < ./abc.sql 导出整个数据库的表结构 mysqldump -uroot -pdbpasswd -d dbname > ...

  3. MySQL 对比数据库的表结构

    有时候,需要对比一下测试环境和生产环境中,数据库的表结构是否有所差异.有两个常用的工具. AmpNmp.DatabaseCompare GUI 界面,支持多种数据库(MySQL.SQL Server. ...

  4. 07_MySQL修改数据库的表结构

    修改数据库的表结构

  5. ORACLE数据库对比表结构

    有时候会有某种需求:需要对比两个表的表结构是否一致,有时候甚至是整个数据库所有表的表结构对比.......表结构对比无非就是字段名.字段类型.字段数据类型.以及字段的顺序的对比.如果需要对比表结构,可 ...

  6. ***电商数据库设计参考:ecshop数据库+订单表结构等

    ecshop订单表结构ecs_order_info说明 -- 表的结构 `ecs_order_info`    CREATE TABLE IF NOT EXISTS `ecs_order_info` ...

  7. 导出db2数据库的表结构和数据(转载)

      对于db2数据库,导入和导出表结构和数据其实很简单,只需要用到db2look和db2move两个命令即可.这两个命令都需要在客户端的命令行处理器 中执行,但对于数据库服务器和客户端不在同一机器上的 ...

  8. mysql 复习与学习(二)数据库及表结构的创建删除

    mysql -h localhost -uroot -p123456 //连接数据库 show databases; //查看数据库 create database if not exists db_ ...

  9. C# 读取文件中的sql语句 创建数据库以及表结构

    大概思路是: 读取文件 根据文件中行内容为GO 作为分割  一条条放到list中 然后在程序中逐条执行sql语句; 值得一提的是 创建数据库的语句是不允许放到程序事务中执行的 所以目前我是分了两个文本 ...

随机推荐

  1. PHP计算每月几周,每周的开始结束日期

    PHP计算每月几周,每周的开始结束日期 因为项目中需要一个每周工作计算的功能,具体日期的算法是,把每月拆分成几个周,最后一个星期这个月份的天数不够就补上下个月的. 列如今天8月27星期一,这个月有31 ...

  2. .net core 3.0 搭建 IdentityServer4 验证服务器

    叙述 最近在搞 IdentityServer4  API接口认证部分,由于之前没有接触过 IdentityServer4 于是在网上一顿搜搜搜,由于自己技术水平也有限,看了好几篇文章才搞懂,想通过博客 ...

  3. Theia APIs——通过JSON-RPC进行通信

    上一篇:Theia APIs——事件 通过JSON-PRC进行通信 在本节中,我将讲解如何创建后端服务并通过JSON-PRC来连接它. 我将使用debug logging system作为例子来进行讲 ...

  4. 【转】Java 正则表达式详解

    正则表达式30分钟入门教程 常用正则表达式 如果你曾经用过Perl或任何其他内建正则表达式支持的语言,你一定知道用正则表达式处理文本和匹配模式是多么简单. 如果你不熟悉这个术语,那么“正则表达式”(R ...

  5. 【转】Vim显示中文乱码

    Windows下,在Vim中如果想让中文正常显示,可以在 Vim安装目录下找到_vimrc 文件,用记事本打开就行,然后在其中加入如下语句:   set fileencodings=gb2312,gb ...

  6. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  7. linux 反选删除文件

    一.背景 历史原因自动部署程序的历史版本没有自动删除脚本.导致服务器没有空间了.但是又不能将所有的备份都删除. 所以要求只保留一个备份版本,把其他的删除. 二. 要求 要求:删除 除了 2017110 ...

  8. Google搜索成最大入口,简单谈下个人博客的SEO

    个人静态博客SEO该考虑哪些问题呢?本篇文章给你答案 咖啡君在开始写文章时首选了微信公众号作为发布平台,但公众号在PC端的体验并不好,连最基本的文章列表都没有,所以就搭建了运维咖啡吧的网站,可以通过点 ...

  9. 01.flask pycharm开启debug模式

    代码照旧

  10. HUAWEI MateBook Fn 功能键/热键切换、设置方法

    原文地址:https://club.huawei.com/thread-13130964-1-1.html HUAWE MateBook E/X/D的F1.F2 等键默认是热键优先.在热键模式下,要想 ...