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测试的更多相关文章

  1. Go ORM框架 - GORM 踩坑指南

    今天聊聊目前业界使用比较多的 ORM 框架:GORM.GORM 相关的文档原作者已经写得非常的详细,具体可以看这里,这一篇主要做一些 GORM 使用过程中关键功能的介绍,GORM 约定的一些配置信息说 ...

  2. ORM框架示例及查询测试,上首页修改版(11种框架)

    继上次ORM之殇,我们需要什么样的ORM框架? 整理了11个ORM框架测试示例,通过示例代码和结果,能很容易了解各种框架的特性,优缺点,排名不分先后 EF PDF XCODE CRL NHiberna ...

  3. Golang 入门系列(十二)ORM框架gorm

    之前在已经介绍了用的github.com/go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章 https://www.cnblogs.com/zhangweizhong/ ...

  4. c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比

    c# 国内外ORM 框架 dapper efcore sqlsugar freesql hisql sqlserver数据常规插入测试性能对比对比 在6.22 号发布了 c# sqlsugar,his ...

  5. 轻量级ORM框架初探-Dapper与PetaPoco的基本使用

    一.EntityFramework EF是传统的ORM框架,也是一个比较重量级的ORM框架.这里仍然使用EF的原因在于为了突出轻量级ORM框架的性能,所谓有对比才有更优的选择. 1.1 准备一张数据库 ...

  6. Android ORM 框架之 greenDAO 使用心得

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

  7. 自己动手写ORM框架

    提起ORM框架,大家都很熟悉,网上流行的ORM框架有很多,其中出名的有一些,不出名的更是数不胜数. 下面是自己实现的一个简单的ORM框架,实现了常用的增删查改功能,供大家研究ORM实现原理. 功能描述 ...

  8. 高性能ORM 框架之 MySqlSugar

    mysql 3.X API地址:  http://www.cnblogs.com/sunkaixuan/p/5987308.html MySqlSugar 1.5 API 一.介简 SqlSugar ...

  9. PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...

随机推荐

  1. 三个实例演示 Java Thread Dump 日志分析

    原文地址: http://www.cnblogs.com/zhengyun_ustc/archive/2013/01/06/dumpanalysis.html jstack Dump 日志文件中的线程 ...

  2. SQL:四舍五入和截取

    四舍五入 , ) 截取 , )

  3. mysql中文显示问号,不能识别中文的解决方案

    到后台mysql中查看是问号. 并不能显示出中文,初步判定是编码的问题. 我们利用 show variables like'character_set_%'; 与 show variables lik ...

  4. @Transactional事务几点注意

    这里面有几点需要大家留意:A. 一个功能是否要事务,必须纳入设计.编码考虑.不能仅仅完成了基本功能就ok.B. 如果加了事务,必须做好开发环境测试(测试环境也尽量触发异常.测试回滚),确保事务生效.C ...

  5. [Android Security] 如何把java代码转换成smali代码

    copy :https://www.cnblogs.com/gordon0918/p/5466514.html 1.概述 Smali是Android系统中Dalvik虚拟机指令语言,在apk逆向过程中 ...

  6. maven与jdk版本不一致报:Unsupported major.minor version 51.0

    I recently uninstalled Java 8, to use Java 6 as I want my code/creations to be usable by more people ...

  7. 聊聊jdbc statement的fetchSize

    在使用MySQL的JDBC时,如果查询结果集过大,使用一次查询,可能会出现Java.lang.OutOfMemoryError: Java heap space问题,因为DB服务器端一次将查询到的结果 ...

  8. FPC and Qt

    Introduction There are a number of Qt bindings available: Qt3 A QtC based binding by Theo Another Qt ...

  9. PHP通用返回值设置

    遇到一个不错的php代码.记录一下. 在写php代码时,经常会遇到需要返回值的情况,可以统一设置一下返回值的格式.下面就是一个不错的例子. 配置类Return.conf.php <?php de ...

  10. easyui简单使用

    easyui近期一直都比较流行,虽然它在效果上被extjs爆了,它的使用难度低,在IE6下表现不错,的确受到了广泛企业程序员的好评. 但是他的API说明还是比较简陋的,刚上手可能还需要摸索一下,为什么 ...