go mysql orm_Go之Gorm和BeegoORM简介及配置使用

简介

ORM

Object-Relationl Mapping, 它的作用是映射数据库和对象之间的关系,方便我们在实现数据库操作的时候不用去写复杂的sql语句,把对数据库的操作上升到对于对象的操作

Gorm

gorm就是基于Go语言实现的ORM库。

类似于Java生态里大家听到过的Mybatis、Hibernate、SpringData等。

下载使用Gorm库

下载gorm库

go get -u github.com/jinzhu/gorm

// 这是比较原始的方式,现在有了go mod,我们可以更方便的配置,甚至不用配置。

// 写好代码,在文件下执行go build,go.mod会自动添加对于gorm的依赖包

CURD

package main

import (

"fmt"

_ "github.com/go-sql-driver/MysqL"

"github.com/jinzhu/gorm"

"os"

"time"

)

const (

dbUser string = "test"

dbPassword string = "ZHOUjian.22"

dbHost string = "121.36.43.223"

dbPort int = 3306

dbName string = "cmdb"

)

var dsn string = fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&loc=Local&parseTime=true",dbUser,dbPassword,dbHost,dbPort,dbName)

type User3 struct {

// 会从gorm嵌入一些字段进来

gorm.Model

Name string

Password string

Birthday time.Time

Sex bool

Tel string

Addr string

Desc string

}

type User4 struct {

Id int `gorm: "primary_key; auto_increment"`

Name string

Password string

Birthday time.Time

Sex bool

Tel string

Addr string

Desc string

}

func (*User4)TableName() string {

return "user"

}

//type User4 struct {

//Id int `gorm:"primary_key"`

//Name string `gorm:"type:varchar(32);unique;not null; default:''"`

//Password string

//Birthday time.Time `gorm:"type:date"`

//Sex bool

//Tel string `gorm:"column:telephone"`

//Addr string

//Desciption string `gorm:"type:text"`

//}

func main() {

db,err := gorm.Open("MysqL",dsn)

if err != nil {

fmt.Println(err)

os.Exit(-1)

}

// 创建表

db.AutoMigrate(&User3{})

db.AutoMigrate(&User4{})

// fmt.Println(db.CreateTable(&User3{},&User4{}))

//db.Model(&User{}).AddIndex("idx_name_addr","name","addr")

db.Close()

}

判断表是否存在

// 判断表是否存在

fmt.Println(db.HasTable(&User3{}))

fmt.Println(db.HasTable("user4"))

db.Close()

fmt.Println(db.DropTable(&User3{},&User4{}))

db.Model(&User3{}).ModifyColumn("birthday","date")

db.Close()

db.Model(&User3{}).DropColumn("birthday")

db.Model(&User3{}).AddIndex("idx_name","name")

// 联合索引 db.Model(&User3{}).AddIndex("idx_name_addr","addr")

db.Close()

// 删除索引

db.Model(&User3{}).RemoveIndex("idx_name_addr")

// 创建UniqueIndex索引

db.Model(&User3{}).AddUniqueIndex("idx_name","name")

BeegoORM

配置BeegoORM

package main

import (

"github.com/astaxie/beego/orm"

_ "github.com/go-sql-driver/MysqL"

)

type User struct {

ID int

Name string

Gender bool

Tel string

Height float32

}

func main() {

// 0. 导入包

// 1. 注册驱动

// 2. 注册数据库

// 3. 定义数据模型 model

// 4. 注册数据模型

// 5. 操作

// 同步表结构

// 数据: 增,删,改,查

dsn := "test:youmen.18@tcp(1.1.1.1:3306)/cmdb?charset=utf8mb4&parseTime=true&loc=PRC"

orm.RegisterDriver("MysqL",orm.DRMysqL)

orm.RegisterDataBase("default","MysqL",dsn)

// 创建User表

orm.RegisterModel(new(User))

orm.RunCommand()

}

Beego_orm运行参数

// 将orm要创建的表呈现为sql

go run beego_rom.go orm sqlall

-- --------------------------------------------------

-- Table Structure for `main.User`

-- --------------------------------------------------

CREATE TABLE IF NOT EXISTS `user` (

`i_d` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,`name` varchar(255) NOT NULL DEFAULT '',`gender` bool NOT NULL DEFAULT FALSE,`tel` varchar(255) NOT NULL DEFAULT '',`height` double precision NOT NULL DEFAULT 0

) ENGINE=InnoDB;

// 同步数据库

// -force 强制创建,先删在创建

// -v verbose info 创建过程将创建的表sql打印出来

go run beego_rom.go orm syncdb

table `user1` already exists,skip

add column `main.User1.Salary` for table `user1`

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值