Gorm入门使用
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入门使用的更多相关文章
- GORM入门指南
gorm是一个使用Go语言编写的ORM框架.它文档齐全,对开发者友好,支持主流数据库. gorm介绍 Github GORM 中文官方网站内含十分齐全的中文文档,有了它你甚至不需要再继续向下阅读本文. ...
- gorm学习地址
1 gorm curd指南 2 gorm入门指南
- Go语言之路—博客目录
Go语言介绍 为什么你应该学习Go语言? 开发环境准备 从零开始搭建Go语言开发环境 VS Code配置Go语言开发环境 Go语言基础 Go语言基础之变量和常量 Go语言基础之基本数据类型 Go语言基 ...
- gorm概述与快速入门
特性 全功能 ORM 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承) Create,Save,Update,Delete,Find 中钩子方 ...
- Golang 入门系列(十二)ORM框架gorm
之前在已经介绍了用的github.com/go-sql-driver/mysql 访问数据库,不太了解的可以看看之前的文章 https://www.cnblogs.com/zhangweizhong/ ...
- Grails 对象关联映射 (GORM) 一
转自:http://justjavac.iteye.com/blog/701445 Domain 类是任何商业应用的核心. 他们保存事务处理的状态,也处理预期的行为. 他们通过关联联系在一起, one ...
- 19 Go的全能ORM简单入门
gorm 昨天我的ldap账户改了以后,openfalcon(v2.1)-dashboard竟然无法登陆了!显然,没有把我的密码同步到本地数据库里面,怎么办?只能改openfalcon用户认证的源码了 ...
- 基于Gin+Gorm框架搭建MVC模式的Go语言后端系统
文/朱季谦 环境准备:安装Gin与Gorm 本文搭建准备环境:Gin+Gorm+MySql. Gin是Go语言的一套WEB框架,在学习一种陌生语言的陌生框架,最好的方式,就是用我们熟悉的思维去学.作为 ...
- Django学习——图书管理系统图书修改、orm常用和非常用字段(了解)、 orm字段参数(了解)、字段关系(了解)、手动创建第三张表、Meta元信息、原生SQL、Django与ajax(入门)
1 图书管理系统图书修改 1.1 views 修改图书获取id的两种方案 1 <input type="hidden" name="id" value=& ...
随机推荐
- Foreign Exchange UVA - 10763
Your non-profit organization (iCORE - international Confederation of Revolver Enthusiasts) coordin ...
- 1027 Colors in Mars
People in Mars represent the colors in their computers in a similar way as the Earth people. That is ...
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- 过 DNF TP 驱动保护(二)
过 DNF TP 驱动保护(二) 文章目录: 01. 博文简介: 02. 环境及工具准备: 03. 分析 TP 所做的保护: 04. 干掉 NtOpenProc ...
- Python中python-nmap模块的使用
目录 python-nmap的安装 python-nmap模块的使用 portScanner()类 环境: python 2.7.13 Windows和Linux默认都是不安装python-nmap ...
- Shiro反序列化漏洞复现
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.使用Shiro的易于理解的API,可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企 ...
- python三元(三目)运算
传统的if,else写法 三元运算 name="alex" if 1==1 else "SB"
- Pytest自动化测试-简易入门教程(02)
Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...
- Linux 内核调度器源码分析 - 初始化
导语 上篇系列文 混部之殇-论云原生资源隔离技术之CPU隔离(一) 介绍了云原生混部场景中CPU资源隔离核心技术:内核调度器,本系列文章<Linux内核调度器源码分析>将从源码的角度剖析内 ...
- XD to Flutter 2.0 现已发布!
Flutter 是 Google 的开源 UI 工具包.利用它,只需一套代码库,就能开发出适合移动设备.桌面设备.嵌入式设备以及 web 等多个平台的精美应用.过去几年,对于想要打造多平台应用的开发者 ...