golang 官方的那个操作mysql的有点麻烦所以就使用了gorm,下面就gorm的使用做下简单介绍

下载gorm:

go get -u github.com/jinzhu/gorm

在项目中引入gorm:

import (

"github.com/jinzhu/gorm"

_ "github.com/jinzhu/gorm/dialects/mysql"

)

定义db连接信息

func MyConn(user, password,host, db, port string) *gorm.DB {

connArgs := fmt.Sprintf("%s:%s@(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local",  user,password, host, port,db )

db, err := gorm.Open("mysql", connArgs)

if err != nil {

log.Fatal(err)

}

db.SingularTable(true)

return db

}

由于grom是使用的orm映射,所以需要定义要操作的表的model,在go中需要定义一个struct, struct的名字就是对应数据库中的表名,注意gorm查找struct名对应数据库中的表名的时候会默认把你的struct中的大写字母转换为小写并加上“s”,所以可以加上db.SingularTable(true) 让grom转义struct名字的时候不用加上s。我是提前在数据库中创建好表的然后再用grom去查询的,也可以用gorm去创建表,我感觉还是直接在数据库上创建,修改表字段的操作方便,grom只用来查询和更新数据。

假设数据库中的表已经创建好,下面是数据库中的建表语句:

CREATE TABLE `xz_auto_server_conf` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`group_zone` varchar(32) NOT NULL COMMENT '大区例如:wanba,changan,aiweiyou,360',

`server_id` int(11) DEFAULT '0' COMMENT '区服id',

`server_name` varchar(255) NOT NULL COMMENT '区服名称',

`open_time` varchar(64) DEFAULT NULL COMMENT '开服时间',

`service` varchar(30) DEFAULT NULL COMMENT '环境,test测试服,formal混服,wb玩吧',

`username` varchar(100) DEFAULT NULL COMMENT 'data管理员名称',

`submit_date` datetime DEFAULT NULL COMMENT '记录提交时间',

`status` tinyint(2) DEFAULT '0' COMMENT '状态,0未处理,1已处理,默认为0',

PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8;

定义model,即struct, 定于struct时我们可以只定义我们需要从数据库中取回的特定字段:

gorm在转义表名的时候会把stuct的大写字母(首字母除外) 替换成“_”,所以下面的"XzAutoServerConf "会转义成数数据库中对应“xz_auto_serverconf”的表名, 对应的字段名的查找会先按照tag里面的名称去里面查找,如果没有定义标签则按照struct定义的字段查找,查找的时候struct字段中的大写会被转义成“”,例“GroupZone”会去查找表中的group_zone字段

//定义struct

type XzAutoServerConf struct {

GroupZone string  `gorm:"column:group_zone"`

ServerId  int

OpenTime  string

ServerName string

Status    int

}

func main () {

db := MyConn("root","123456","127.0.0.1", "data","3306")

defer db.Close()  // 关闭数据库链接,defer会在函数结束时关闭数据库连接

var rows []XzAutoServerConf

//select

db.Where("status=?", 0).Select([]string{"group_zone", "server_id", "open_time", "server_name"}).Find(&rows)

//update

err := db.Model(&rows).Where("server_id=?", 80).Update("status", 1).Error

if err !=nil {

fmt.Println(err)

}

fmt.Println(rows)

}

当然你也可以利用gorm执行原生的sql

err  := db.Exec("update xz_auto_server_conf  set server_name="花好月圆" where server_id = 1).Error

if err  !=nil {

log.Fatal(err)

}

//也可以传带参数的sql

sql := fmt.Sprintf(`update xz_auto_server_conf  set server_name="花好月圆" where server_id = %d`, 1 )

err := db.Exec(sql).Error

if err  !=nil {

log.Fatal(err)

}

//select

var rows []api.XzAutoServerConf

db.Raw("select * from xz_auto_server_conf").Scan(&rows)

fmt.Println(rows)

更多原生sql操作参考https://jasperxu.github.io/gorm-zh/advanced.html#sb

更多grom操作可以参考:https://jasperxu.github.io/gorm-zh/

©著作权归作者所有:来自51CTO博客作者woahjknes的原创作品,如需转载,请注明出处,否则将追究法律责任

gorm.open mysql_golang gorm 操作mysql相关推荐

  1. gorm.open mysql_golang gorm 操作mysql及gorm基本用法

    golang 官方的那个操作mysql的有点麻烦所以就使用了gorm,下面就gorm的使用做下简单介绍 下载gorm: go get -u github.com/jinzhu/gorm 在项目中引入g ...

  2. go gorm 关联模式_Beego 结合 GORM 操作 Mysql 数据库

    GORM 简单介绍 GORM 是 golang 的一个 orm 框架.它是一个单独的 ORM 框架.相比 beego 自带的 orm 框 架, 语法要更友好一些,关联查询更简单.功能更强大一些. 简单 ...

  3. go操作mysql(原生database/sql, sqlx库)GORM

    GORM官网地址: GORM 指南 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 参考: ...

  4. gorm 操作mysql

    目录 一.gorm介绍 二.gorm安装 三.gorm模型定义 1.ORM介绍 2.gorm模型定义 3.gorm模型标签 4.定义表名 5.gorm.Model 6.自动更新时间 四.gorm连接数 ...

  5. GROM操作mysql数据库

    目录 GROM操作mysql数据库 Gorm官方文档 GROM连接数据库 创建 查询 修改 删除 GROM操作mysql数据库 Gorm官方文档 GROM连接数据库 dsn := "root ...

  6. 快速入门GORM,使用GORM进行CURD

    快速入门GORM,使用GORM进行CURD 1.模型使用 2.创建表记录 3.查询记录 检索单个对象 用主键检索 检索全部对象 条件 限制和偏移 4.更新 简要更新 更新单个列 5.删除 删除一条记录 ...

  7. DOS命令行操作MySQL常用命令

    平时用可视化界面用惯了,如果紧急排查问题,没有安装可视化工具的话,只能通过命令来看了. 以备不时之需,我们要熟悉一下命令行操作MySQL. 打开DOS命令窗口:WIN + R 输入cmd,回车 然后输 ...

  8. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  9. python3操作mysql教程_python3操作mysql教程

    一.下载\安装\配置 1. python3 当前最新版本是python3.2,下载地址是 http://www.python.org/ftp/python/3.2.3/python-3.2.3.msi ...

最新文章

  1. 2020中国人工智能年度评选报名即将截止!4大类别7大奖项开放申请
  2. 使用PowerDesigner导入SQL生成数据表模型
  3. linux内存free低cache高,Linux之free命令buff/cache过高
  4. android 7调用摄像头,Android调用摄像头拍照(兼容7.0)
  5. html列表远点小,HTML小知识点积累(示例代码)
  6. matepad和鸿蒙,上手华为新 MatePad Pro :搭载鸿蒙系统后,生产力有何不同?
  7. 让自定义view宽高成比例显示
  8. Step By Step(1),Build Convolutional Neural Networks
  9. 四叶草配置工具Clover Configurator for Mac
  10. 用C语言实现正则表达式匹配器
  11. 用Java实现学生管理系统【简化版】基础
  12. 【解决】速达服务启动失败,文件无效
  13. JavaScript判断一个时间点在不在某段时间段范围之内
  14. Java基础 第一节 第一课
  15. 2020年开发踩坑记录
  16. linux26内核,基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程
  17. 新版火狐 拖 功能_Firefox 33的新功能
  18. VRF虚拟路由转发实例说明
  19. 汇编语言实现简单的人机问答
  20. Python Pathlib 详解

热门文章

  1. Android 动画(二) 实战演示——仿网易新闻安卓端菜单栏动画
  2. 【颜纠日记】百度搜索语法带图教学实操“找文章篇”分享
  3. 虚拟人铺路数字产业未来
  4. python中cv2提取图像rgb值,获取RGB值opencv python
  5. 卡尔曼滤波的五个公式
  6. dhcp接口模式/全局模式
  7. linux 网卡 mac 配置文件,Linux下更改网卡的MAC物理地址
  8. 基于STM32的A2B音频信号发生器开发
  9. 利用pdfFactory Pro强调你的文件的保密性
  10. win2003系统下 百度云盘 网络异常