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. 后端Spring Boot+前端Android交互+MySQL增删查改

    2021.1.27 更新 已更新新版本博客,更新内容很多,因此新开了一篇博客,戳这里. 1 概述 使用spring boot作为后端框架与Android端配合mysql进行基本的交互,包含了最基本的增 ...

  2. 9. resultMap 结果映射集

    @Data public class CreditCard extends BankCard { /** * 消费额度 */ private String creditLine; } @Data pu ...

  3. 《MySQL必知必会》学习笔记整理

    简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...

  4. 现代操作系统原书第3版.mobi

    电子书资源:现代操作系统原书第3版 书籍简介   本书是操作系统领域的经典之作,与第2版相比,增加了关于Linux.Windows Vista和Symbian操作系统的详细介绍.书中集中讨论了操作系统 ...

  5. Linux下安装Anaconda 并进行用户共享

    下载镜像 wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ Anaconda3-5.3.1-Linux-x86_64.sh 安装 ...

  6. 微软加入字节码联盟,进一步开发支持Blazor 的WebAssembly技术

    字节码联盟 (Bytecode Alliance)宣布已正式成为 501(c)(3) 非营利组织,参与组建的企业/组织包括 Fastly.英特尔.Mozilla 和微软,此外还邀请到了 Arm.DFI ...

  7. (邹博ML)数学分析与概率论

    机器学习入门 深度学习和机器学习? 深度学习在某种意义上可以认为是机器学习的一个分支,只是这个分支非常全面且重要,以至于可以单独作为一门学科来进行研究. 回忆知识 求解S. 对数函数的上升速度 我们使 ...

  8. 2 IDEA——新建一个java项目

    快捷键 public class Hello { // psvm public static void main(String[] args) { // sout System.out.println ...

  9. 获取某日期后一周、一月、一年的日期 php

    //获取某日期后三周同一天日期public static function getNextDate($date){ $return = [ date( 'Y-m-d', strtotime(" ...

  10. idea中properties配置文件没有代码提示及代码高亮问题解决方案

    更多精彩关注微信公众号 1.解决properties文件没有代码提示问题:首先,单击项目结构按钮,如下图: 然后,给项目添加Spring依赖支持,如下图: 2.解决代码不高亮问题:     代码不高亮 ...