>백엔드 개발 >Golang >mysql을 운영하기 위한 golang gorm 소개와 gorm의 기본 사용법

mysql을 운영하기 위한 golang gorm 소개와 gorm의 기본 사용법

藏色散人
藏色散人앞으로
2021-05-17 16:45:134029검색

다음 golang 튜토리얼 칼럼에서는 mysql과 gorm을 운용하기 위한 golang gorm의 기본적인 사용법을 소개하겠습니다. 필요한 친구들에게 도움이 되길 바랍니다!

공식 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 연결 정의 information

func DbConn(MyUser, Password, Host, Db string, Port int) *gorm.DB {
 connArgs := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", MyUser,Password, Host, Port, Db )
 db, err := gorm.Open("mysql", connArgs)
 if err != nil {
  log.Fatal(err)
 }
 db.SingularTable(true)
 return db
}

grom은 ORM 매핑을 사용하기 때문에 동작할 테이블의 모델을 정의해야 합니다. go에서는 구조체의 이름이 데이터베이스의 테이블 이름과 일치한다는 점에 유의하세요. 데이터베이스의 테이블 이름에 해당하는 구조체 이름을 검색합니다. 기본적으로 구조체의 대문자는 소문자로 변환되고 "s"가 추가되므로 db.SingularTable(true)를 추가하여 grom을 허용할 수 있습니다. 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;

모델, 즉 구조체를 정의할 때 구조체를 지정할 때 필요한 특정 필드만 정의하면 됩니다. 데이터베이스에서 검색하려면:

gorm은 테이블 이름을 이스케이프 처리할 때 stuct의 대문자(첫 번째 문자 제외)를 "_"로 대체하므로 다음 "XzAutoServerConf"는 "xz_auto_server에 해당하는 테이블 이름으로 이스케이프됩니다. 필드 이름에 대한 검색은 먼저 태그의 이름을 기반으로 합니다. 정의된 태그가 없는 경우 구조체에 정의된 필드를 기반으로 검색이 이루어집니다. 검색 시 대문자 구조체 필드에서 " "로 이스케이프됩니다. 예를 들어 "GroupZone"은 테이블에서 group_zone 필드를 검색합니다

//定义struct
type XzAutoServerConf struct {
 GroupZone string `gorm:"column:group_zone"`
 ServerId int
 OpenTime string
 ServerName string
 Status int
}
//定义数据库连接
type ConnInfo struct {
 MyUser string
 Password string
 Host string
 Port int
 Db string
}

func main () {
cn := ConnInfo{
  "root",
  123456",
  "127.0.0.1",
  3306,
  "xd_data",
 }
  db := DbConn(cn.MyUser,cn.Password,cn.Host,cn.Db,cn.Port)
  defer db.Close() // 关闭数据库链接,defer会在函数结束时关闭数据库连接
 var rows []api.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)
}

더 많은 grom 작업을 보려면 https://jasperxu.github.io/를 참조하세요. gorm-zh/

Golang의 사용법을 살펴보겠습니다. GORM

gorm

gorm은 go 언어로 데이터베이스 액세스를 구현하는 ORM(객체 관계형 매핑) 라이브러리입니다. 이 라이브러리를 사용하면 객체 지향 방법을 사용하여 데이터베이스의 데이터에 대한 CRUD(추가, 삭제, 수정, 쿼리)를 보다 편리하게 수행할 수 있습니다.

기본 사용법

종속성 다운로드

go get github.com/jinzhu/gorm
go get github.com/go-sql-driver/mysql

첫 번째는 핵심 라이브러리입니다.

두 번째는 mysql 드라이버 패키지입니다.

데이터베이스에 연결

packae main
import (
 "github.com/jinzhu/gorm"
 _ "github.com/jinzhu/gorm/dialects/mysql"
 "fmt"
)
func main() {
 db, err := gorm.Open("mysql",
 "root:root@/test?charset=utf8&parseTime=True&loc=Local")

 if err != nil {
  fmt.Println(err)
  return
 }else {
  fmt.Println("connection succedssed")
 }
 defer db.Close()

데이터 추가

type User struct {
 ID  int   `gorm:"primary_key"`
 Name string   `gorm:"not_null"`
}
func add() {
 user := &User{Name:"zhangsan"}
 db.Create(user)
}

데이터 삭제

user := &User{ID:1}
db.delete(user)

데이터 업데이트

user := &User{ID:1}
db.Model(user).update("Name","lisi")

데이터 쿼리

// query all
var users []User
db.Find(&users)
fmt.Println(users)
// query one
user := new (User)
db.First(user,1)
fmt.Println(user)

기타 s

구조가 있는지 확인 데이터베이스에서 본문에 해당하는 테이블:

db.HasTable(User{})

Create table

db.CreateTable(User{})

위는 gorm의 기본 사용법입니다.

위 내용은 mysql을 운영하기 위한 golang gorm 소개와 gorm의 기본 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제