博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
012-Go ORM框架之Gorm测试
阅读量:6193 次
发布时间:2019-06-21

本文共 2096 字,大约阅读时间需要 6 分钟。

1:参考:https://github.com/jinzhu/gorm

2:数据库脚本(pg)

--create table posts(    id            serial primary key,    content        text,    author        varchar(100),    create_time    timestamptz);create table comments(    id            serial primary key,    content        text,    author        varchar(100),    post_id        int references posts(id),    create_time    timestamptz);

3:posts.go

package postsimport(	"fmt"	"github.com/jinzhu/gorm"	_"github.com/lib/pq"	"time")type Comment struct{	ID			int 			Content		string		`sql:"not null"`	Author		string		`sql:"not null"`	PostId		int 		`sql:"post_id"`	CreateTime	time.Time	`sql:"create_time"`}type Post struct{	ID			int 			Content		string		`sql:"not null"`	Author		string		`sql:"not null"`	CreateTime	time.Time	`sql:"create_time"`	Comments	[]Comment}const(    host = "192.168.72.128"    port = 5432    user = "test"    password = "test"    dbname = "testdb")var Db *gorm.DBfunc init(){	var err error		psqlInfo := fmt.Sprintf("host=%s port=%d user=%s "+		"password=%s dbname=%s sslmode=disable",host, port, user, password, dbname)	Db, err = gorm.Open("postgres", psqlInfo)	if err != nil{		panic(err)	}	Db.AutoMigrate(&Post{}, &Comment{})}func (post *Post) CreatePost() error{	return Db.Create(post).Error}func (comment *Comment) CreateComment(post *Post) error{	return Db.Model(post).Association("Comments").Append(comment).Error}func (post *Post) GetComments() (comments []Comment, err error){	Db.Where("author=$1", "王五").First(post)	err = Db.Model(&post).Related(&comments).Error	return}

 4:main.go

package mainimport(	"fmt"	"time"	"Chapter02/posts")func main(){	post := posts.Post{		Content:"Hello go!",		Author:"王五",		CreateTime:	time.Now(),	}	fmt.Println(post)	err := post.CreatePost()	if err!=nil{		panic(err)	}	fmt.Println(post)	comment := posts.Comment{		Content:"不错哟",		Author:"小二",		CreateTime:	time.Now(),	}	err = comment.CreateComment(&post)	if err != nil{		panic(err)	}	post = posts.Post{}	comments, err := post.GetComments()	if err != nil{		panic(err)	}	for _,p :=  range comments{		fmt.Printf("%s-%s\n", p.Author,p.Content)	}}

  

 

转载地址:http://ihuca.baihongyu.com/

你可能感兴趣的文章
Windows Phone 7 学习笔记2:感应设备的方向
查看>>
kernel_read【转】
查看>>
PHP.ini配置文件(转载)
查看>>
[LeetCode] Rising Temperature 上升温度
查看>>
《Ext JS权威指南》——1.4节Ext JS的开发工具的获取、安装与配置介绍
查看>>
高维度CRM销售漏斗模型操作中注意事项
查看>>
OA系统和CRM客户关系管理 流程是核心
查看>>
最新版Win 10S遭吐槽:看起来很美,用起来很烦
查看>>
奥巴马政府发布最新Fintech白皮书,提出十大创新监管原则
查看>>
人工智能对人类的威胁只是程序BUG? | 万物互联创新大会
查看>>
Infinera Q2营收同环比下滑 加速推出新产品
查看>>
HR软件Impraise获160万美元种子投资
查看>>
还在用PS磨皮去皱?看看如何用神经网络高度还原你的年轻容貌!
查看>>
苏州扎实推进消防大数据 综合业务平台试点应用
查看>>
物联网与智能化是我国传感器发展突破口
查看>>
调试是新建数据中心成功运营的关键
查看>>
雅虎证实5亿账户被窃 刷新单一网站用户信息泄露纪录
查看>>
科学家警告:被黑客入侵的工业机器人可能将人类生命置于危险中
查看>>
你的电脑会感染勒索病毒吗?快用这款工具查一下
查看>>
村路安防建设加速 科学推进安全前行
查看>>