Gorm

GORM CRUD 数据库的增删改查


go get -u github.com/jinzhu/gorm
go get -u github.com/jinzhu/gorm/dialects/mysql

go常规查询操作

package main

import (
"encoding/json"
"fmt"
"time" "github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
) var db *gorm.DB // Test 表结构
type Test struct {
ID int `json:"id" db:"id" gorm:"id"`
Username string `json:"username" db:"username" gorm:"username"`
Password string `json:"password" db:"password" gorm:"password"`
Datetime time.Time `json:"datetime" db:"datetime" gorm:"datetime"`
City string `json:"city" db:"city" gorm:"city"`
Country string `json:"country" db:"country" gorm:"country"`
Sex string `json:"sex" db:"sex" gorm:"sex"`
Age string `json:"age" db:"age" gorm:"age"`
} // TableName 数据库名称规范
func (t Test) TableName() string {
return "test"
} // Init xx
func Init() (err error) {
db, err = gorm.Open("mysql", "root:1qa2ws3ed@/gouse?charset=utf8&parseTime=True&loc=Local") if err != nil {
fmt.Println("连接诶数据库失败")
return
} return err
} // SelectData 查询单条语句
func SelectData() (err error) {
var info Test // First根据主键查询单条语句+++++++++++++
//_ = db.First(&info)
////fmt.Println(info.Username, info.Password, info.Age, info.Datetime)
//marshal, err := json.Marshal(info)
//if err != nil {
// fmt.Println("反序列化失败")
// return
//
//}
//fmt.Println(string(marshal)) // 随机获取条数据++++++++++++++++
//db.Take(&info)
//TakeData, err := json.Marshal(info)
//fmt.Println(string(TakeData)) //// 根据主键查询最后一条记录+++++++++++++
//db.Last(&info)
//LastData, err := json.Marshal(info)
//fmt.Println(string(LastData)) //// 获取所有记录+++++++++++++++
//var infoList []Test
//
//db.Find(&info)
//FindData, err := json.Marshal(infoList)
//fmt.Println(string(FindData)) // First 查询主键为10000的数据(仅当主键为int时)
db.First(&info, 10000)
marshal, err := json.Marshal(info)
fmt.Println(string(marshal))
return err
} // WhereData where语句查询
func WhereData() (err error) {
// where 条件查询sex 为女的主键第一个
//var info Test
//db.Where("sex = ?", "女").First(&info)
//marshal, err := json.Marshal(info)
//fmt.Println(string(marshal)) // 查询所有sex为男的用户 并统计计数
var infoList []Test
//db.Where("sex = ?", "男").Find(&infoList)
//fmt.Println(len(infoList)) db.Where("id in (?)", []int{1000, 2000}).Find(&infoList)
marshal, err := json.Marshal(infoList)
fmt.Println(string(marshal)) return err
} // main 主函数
func main() {
_ = Init()
//err := SelectData() err := WhereData()
if err != nil {
fmt.Println("")
return
}
}
	// like 查询
db.Where("username like ?", "%abc%").Find(&infoList)
LikeData, err := json.Marshal(infoList)
fmt.Println(string(LikeData))
return err

注: ?其实就是占位符

  • go结构体转换成map

go map 查询

	db.Where(map[string]interface{}{"id": 1000}).Find(&info)
MapData, err := json.Marshal(info) fmt.Println(string(MapData)) return err

go not查询

// NotSelect  Not查询用法
func NotSelect() (err error) {
var infoList []Test db.Not("id = ?", "1").First(&infoList)
NotLikeData, err := json.Marshal(infoList)
fmt.Println(string(NotLikeData)) db.Not("id in (?)", []int{1, 2, 3, 4, 5}).First(&infoList)
notinData, err := json.Marshal(infoList)
fmt.Println(string(notinData))
return err }

go or 查询


// OrSelect or查询
func OrSelect() (err error) {
var infoList []Test
db.Where("id = ?", "1").Or("id = ?", "2").Find(&infoList)
OrData, err := json.Marshal(infoList)
fmt.Println(string(OrData)) return err
}

go 内联查询 等同于where条件

// 内联条件
func NeiLian() (err error) {
var info Test
db.Find(&info, "id = ?", "1")
marshal, err := json.Marshal(info)
fmt.Println(string(marshal))
return err
}

Go firstorcreate

获取匹配的第一条记录,否则根据给定的条件创建一个新的记录(仅支持struct or map)

// FirstOrCreate 查询条件后的第一条语句 如果为空 就创建一条记录
func FirstOrCreate() (err error) {
var info Test
db.Where("id = ?", "1000").FirstOrCreate(&info)
marshal, err := json.Marshal(info)
fmt.Println(string(marshal))
return err
}

Gorm入门使用的更多相关文章

  1. GORM入门指南

    gorm是一个使用Go语言编写的ORM框架.它文档齐全,对开发者友好,支持主流数据库. gorm介绍 Github GORM 中文官方网站内含十分齐全的中文文档,有了它你甚至不需要再继续向下阅读本文. ...

  2. gorm学习地址

    1 gorm curd指南 2 gorm入门指南

  3. Go语言之路—博客目录

    Go语言介绍 为什么你应该学习Go语言? 开发环境准备 从零开始搭建Go语言开发环境 VS Code配置Go语言开发环境 Go语言基础 Go语言基础之变量和常量 Go语言基础之基本数据类型 Go语言基 ...

  4. gorm概述与快速入门

    特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方 ...

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

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

  6. Grails 对象关联映射 (GORM) 一

    转自:http://justjavac.iteye.com/blog/701445 Domain 类是任何商业应用的核心. 他们保存事务处理的状态,也处理预期的行为. 他们通过关联联系在一起, one ...

  7. 19 Go的全能ORM简单入门

    gorm 昨天我的ldap账户改了以后,openfalcon(v2.1)-dashboard竟然无法登陆了!显然,没有把我的密码同步到本地数据库里面,怎么办?只能改openfalcon用户认证的源码了 ...

  8. 基于Gin+Gorm框架搭建MVC模式的Go语言后端系统

    文/朱季谦 环境准备:安装Gin与Gorm 本文搭建准备环境:Gin+Gorm+MySql. Gin是Go语言的一套WEB框架,在学习一种陌生语言的陌生框架,最好的方式,就是用我们熟悉的思维去学.作为 ...

  9. Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)

    1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...

随机推荐

  1. HTTP 网络通讯过程

    1. 网络模型概览 2. HTTP 网络通讯过程 1. 网络模型概览 OSI 先有模型,后有协议,先有标准,后进行实践:而 TCP/IP 则相反,先有协议和应用再提出了模型,且是参照的 OSI 模型. ...

  2. Java基础(面试复习整理)

    基础知识和语法 Java语言初识 计算机语言发展 机器语言.汇编.C.C++.Java Java的诞生与发展 1995 JavaSE JavaME Android JavaEE 2006(大数据) H ...

  3. 【Navicat】获取表结构的DDL语句以及获取更新表字段的操作的DDL

    1.获取表结构的DDL语句 2.获取修改表结构某一字段的DDL语句  设计表-修改表字段(记住不要保存)-SQL预览

  4. hdu4499 搜索

    题意:       给你一个棋盘,最大是5*5的,问你最多可以放多少个炮,炮和炮之间不可以相互攻击,这块只的是只能走一步,不存在两个炮中间三个棋子的情况.. 思路:    刚开始想的是把所有的空位置都 ...

  5. hdu4179 限制最短路

    题意:       这个题目估计读懂题意就ok了,关键是题意蛋疼,像我这样的英语渣渣活着可真难啊,题意大体是这样,给你n个点m条无向边,给你起点和终点,让你求从起点到终点的最短路径,其中有一些限制: ...

  6. 从苏宁电器到卡巴斯基第28篇:难忘的三年硕士时光 VI

    想要毕业,还需满足一个要求 像我们这种三年制的工科硕士,想要毕业的话,除了需要按照要求完成毕业论文以外,还需要在相关期刊上发表一篇与毕业论文相关的小论文,或者申请软件著作权,或者申请专利.我不知道别的 ...

  7. Portswigger web security academy:XML external entity (XXE) injection

    Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...

  8. SQL注入平台第一关,注入?id=1'不报错的问题

    第一关需要在地址栏输入id参数测试是否有注入点 我这里输入 http://localhost/sqli-labs-master/Less-1/?id=1 下一步将id参数改为?id=1' http:/ ...

  9. CentOS安装Redis报错[server.o] Error 1

    原因 准备安装的Redis服务版本为6.0.8, gcc的版本为4.8.5,可能是gcc版本过低到导致的 解决办法 安装低版本Redis或者安装高版本gcc

  10. PHP 调用请求外网接口

    1.类中定义静态方法 class FtpService{ /** * 请求外网 * @param $url 外网接口url * @param bool $params 参数,拼接字符串 post请求可 ...