012-Go ORM框架之Gorm测试
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 posts import(
"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.DB func 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 main import(
"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)
}
}
012-Go ORM框架之Gorm测试的更多相关文章
- Go ORM框架 - GORM 踩坑指南
今天聊聊目前业界使用比较多的 ORM 框架:GORM.GORM 相关的文档原作者已经写得非常的详细,具体可以看这里,这一篇主要做一些 GORM 使用过程中关键功能的介绍,GORM 约定的一些配置信息说 ...
- ORM框架示例及查询测试,上首页修改版(11种框架)
继上次ORM之殇,我们需要什么样的ORM框架? 整理了11个ORM框架测试示例,通过示例代码和结果,能很容易了解各种框架的特性,优缺点,排名不分先后 EF PDF XCODE CRL NHiberna ...
- Golang 入门系列(十二)ORM框架gorm
之前在已经介绍了用的github.com/go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章 https://www.cnblogs.com/zhangweizhong/ ...
- c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比
c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比对比 在6.22 号发布了 c# sqlsugar,his ...
- 轻量级ORM框架初探-Dapper与PetaPoco的基本使用
一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库 ...
- Android ORM 框架之 greenDAO 使用心得
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
- 自己动手写ORM框架
提起ORM框架,大家都很熟悉,网上流行的ORM框架有很多,其中出名的有一些,不出名的更是数不胜数. 下面是自己实现的一个简单的ORM框架,实现了常用的增删查改功能,供大家研究ORM实现原理. 功能描述 ...
- 高性能ORM 框架之 MySqlSugar
mysql 3.X API地址: http://www.cnblogs.com/sunkaixuan/p/5987308.html MySqlSugar 1.5 API 一.介简 SqlSugar ...
- PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...
随机推荐
- C#编程(七十一)----------DLR ScriptRuntime
包含DLR ScriptRuntime DLR是微软的一个开源项目.为.NET影城程序提供了动态脚本注入支持.DLR构建的功能包含两个方面,一个是共享的动态类型系统,一个是标准的承载模型.但是VS并没 ...
- Android_深入解析AsyncTask
转载:特别感谢浪人的星空,有部分修改! http://blog.csdn.net/hitlion2008/article/details/7983449 1.AsyncTask的内幕 AsyncTas ...
- 查看Oracle数据库名和实例名的命令
查看数据库名 SQL> select name from v$database; NAME --------- ORCL SQL> desc v$database; 名称 ...
- Java文件管理系统
上一个版本设计参照了 windows 资源管理器的原则,使用了多年.也发现了少许问题,也许是我们应用场景不一样... 目前的设计结合了目前的云概念.目录采用的是虚拟方式和实际的目录无关,只是存在一定的 ...
- 反恐24小时第一季/全集24 Live Another Day迅雷下载
反恐24小时 第一至九季 24 Season 1-9 (2001-2014) 本季看点:<24小时>第8季将在拥有美国的象征自由女神像的纽约开始,在新的一天,CTU重新开张,新的领导为从M ...
- jquery入门 改动网页背景颜色
我们在浏览一些站点,尤其是一些小说站点的时候,都会有改动页面背景颜色的地方,这个功能使用jquery非常easy实现. 效果图: show you code: <!doctype html> ...
- 自定义PreferenceActivity和PreferenceFragment的样式
感谢:http://blog.csdn.net/luck_apple/article/details/7064004 这篇文章讲的是如何定义fragment的样式,基本布局都是从源码中弄过来的.通过设 ...
- [转]抢先Mark!微信公众平台开发进阶篇资源集锦
FROM : http://www.csdn.net/article/2014-08-01/2820986 由CSDN和<程序员>杂志联合主办的 2014年微信开发者大会 将于8月23日在 ...
- JavaScript:ECMAScript 引用类型
ylbtech-JavaScript:ECMAScript 引用类型 1. 返回顶部 2. ECMAScript 引用类型返回顶部 引用类型通常叫做类(class). 本教程会讨论大量的 ECMASc ...
- libnids使用举例
---[[ libnids应用实例 ]]---------------------------------- 1.nids_next()函数的应用 ========================== ...