gorm操练记录
这个数据库的定义蛮全的,先作个记录。
- package main
- import (
- "time"
- "github.com/jinzhu/gorm"
- _ "github.com/jinzhu/gorm/dialects/mysql"
- )
- type User struct {
- gorm.Model
- Birthday time.Time
- Age int
- Name string `gorm:"size:255"` // string默认长度为255, 使用这种tag重设。
- Num int `gorm:"AUTO_INCREMENT"` // 自增
- CreditCard CreditCard // One-To-One (拥有一个 - CreditCard表的UserID作外键)
- Emails []Email // One-To-Many (拥有多个 - Email表的UserID作外键)
- BillingAddress Address // One-To-One (属于 - 本表的BillingAddressID作外键)
- //BillingAddressID sql.NullInt64
- ShippingAddress Address // One-To-One (属于 - 本表的ShippingAddressID作外键)
- ShippingAddressID int
- IgnoreMe int `gorm:"-"` // 忽略这个字段
- Languages []Language `gorm:"many2many:user_languages;"` // Many-To-Many , 'user_languages'是连接表
- }
- type Email struct {
- ID int
- UserID int `gorm:"index"` // 外键 (属于), tag `index`是为该列创建索引
- Email string `gorm:"type:varchar(100);unique_index"` // `type`设置sql类型, `unique_index` 为该列设置唯一索引
- Subscribed bool
- }
- type Address struct {
- ID int
- Address1 string `gorm:"not null;unique"` // 设置字段为非空并唯一
- Address2 string `gorm:"type:varchar(100);unique"`
- //Post sql.NullString `gorm:"not null"`
- }
- type Language struct {
- ID int
- Name string `gorm:"index:idx_name_code"` // 创建索引并命名,如果找到其他相同名称的索引则创建组合索引
- Code string `gorm:"index:idx_name_code"` // `unique_index` also works
- }
- type CreditCard struct {
- gorm.Model
- UserID uint
- Number string
- }
- func main() {
- db, err := gorm.Open("mysql", "root:password@(127.0.0.1:3306)/gorm?charset=utf8&parseTime=True&loc=Local")
- if err != nil {
- panic(err)
- }
- db.DB().SetMaxIdleConns(10)
- db.DB().SetMaxOpenConns(100)
- db.SingularTable(true)
- defer db.Close()
- // 自动迁移模式
- db.AutoMigrate(&User{}, &Email{}, &Address{}, &Language{}, &CreditCard{})
- /*
- db.Create(&Product{Code: "L1212", Price: 1000})
- // 读取
- var product Product
- db.First(&product, 1) // 查询id为1的product
- db.First(&product, "code = ?", "L1212") // 查询code为l1212的product
- // 更新 - 更新product的price为2000
- db.Model(&product).Update("Price", 2000)
- // 删除 - 删除product
- db.Delete(&product)
- tx := db.Begin()
- r1 := db.DropTable(&Address{})
- r2 := db.DropTableIfExists(&CreditCard{})
- if r1.Error != nil || r2.Error != nil {
- tx.Rollback()
- return
- }
- tx.Commit()
- */
- }
gorm操练记录的更多相关文章
- gorm创建记录
1. 简单创建记录 user := User{Name: "李四", Age: 88, Birthday: time.Now()} ret := db.Create(&u ...
- gorm创建记录及设置字段默认值
package main import ( "database/sql" "gorm.io/driver/mysql" "gorm.io/gorm&q ...
- gorm 更新数据时,0值会被忽略
原文: https://www.tizi365.com/archives/22.html ------------------------------------------------------- ...
- PhalGo-介绍
PhalGo-介绍 phalgo是一个Go语言的一体化开发框架,主要用于API开发应为使用ECHO框架作为http服务web程序一样可以使用,牛顿曾经说过"如果我比别人看得远,那是因为我站在 ...
- Grails 对象关联映射 (GORM) 一
转自:http://justjavac.iteye.com/blog/701445 Domain 类是任何商业应用的核心. 他们保存事务处理的状态,也处理预期的行为. 他们通过关联联系在一起, one ...
- gorm的日志模块源码解析
gorm的日志模块源码解析 如何让gorm的日志按照我的格式进行输出 这个问题是<如何为gorm日志加traceId>之后,一个群里的朋友问我的.如何让gorm的sql日志不打印到控制台, ...
- Go项目中beego的orm使用和gorm的使用
按照beego官方文档练习ORM的使用,model创建完始终没找到办法创建表,于是使用gorm翻译文档和官方文档进行了练习,使用起来还是比较简单. 安装: 方法一:Terminal打开,go get ...
- 【EF6学习笔记】(二)操练 CRUD 增删改查
本篇原文链接: Implementing Basic CRUD Functionality 说明:学习笔记参考原文中的流程,为了增加实际操作性,并能够深入理解,部分地方根据实际情况做了一些调整:并且根 ...
- Gorm使用详解
1.什么是Gorm go语言编写的orm框架 特点: 1)全功能ORM 2)关联(包含一个,包含多个,属于,多对多) 3)Callbacks(创建/保存/更新/删除/查找前后回调) 4)预加载 5)事 ...
随机推荐
- 【软件工具】easyExcel简明使用指南
easyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不发的话可能还行,但是一旦并发上来 ...
- JavaScript-----3.变量
1.变量的使用 变量在使用的时候分两步:1. 声明变量 2. 赋值 1.1声明变量 //声明变量 var age;//声明一个名字为age的变量 var是JS的一个关键字,用于声明变量,使用该关键字声 ...
- 如何解决jpa 要求column 名称单词必须用下划线
[转]:http://www.jeesns.cn/article/detail/6657 先引出轮子http://blog.csdn.net/54powerman/article/details/76 ...
- Logos讲解--逆向开发
前言 Logos是CydiaSubstruct框架中提供的一组宏定义.利于开发者使用宏进行Hook操作,其语法简单,功能是非常强大且稳定. 详细内容logos语法为http://iphonedevwi ...
- mysql那些事(1)手机号与座机号码如何存储
创建mysql数据表的时候,经常会遇到手机号码和座机号码数据的存储问题. 先说手机号码:很多人喜欢使用数字来进行存储,手机号不涉及到运算,并且有时候要带括号,加号之类的字符,有时候还要以0开头.所以, ...
- 如何把图片变得炫酷多彩,Python教你这样实现!
有趣的图片 如何能让图片变得好玩?首先需要让它动起来!可如果是多张图片,我们还可以将其拼接起来组成gif动图,可一张图怎么玩?记得之前写过一个小练习,把一张图片拆分成九宫格的分片图.那么,能否由此下手 ...
- su和sudo的区别与使用
一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比如我们以普通用户beinan登录的,但要添加用户任务,执行useradd ,beina ...
- hibernate查询方式(四)
---恢复内容开始--- 1.mysql中的多表联合查询 ****/*内连接查询*/ 只显示两个表有关联的记录 //第一种 SELECT * FROM Class c ,Student s WHER ...
- iOS apns推送
前言:推送分为本地推送以及远程推送. 两者的区别为本地推送一般为定时推送.定期推送或者位置推送.而远程推送更为多样化,能满足较高的要求.当然远程推送需要服务器端开发,开发流程较复杂. 1.本地推送只需 ...
- iOS全局处理键盘事件
转自:http://www.cnblogs.com/xinus/archive/2013/01/22/ios-keybord-notification.html 注册监听键盘事件的通知 [[NSNot ...