ホームページ > バックエンド開発 > Golang > mysqlを操作するためのgolang gormとgormの基本的な使い方を紹介します。

mysqlを操作するためのgolang gormとgormの基本的な使い方を紹介します。

藏色散人
リリース: 2021-05-17 18:31:06
転載
3993 人が閲覧しました

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 接続情報を定義します

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では構造体を定義する必要があります。構造体の名前はデータベース内のテーブル名に対応します。gormが構造体を検索するときに注意してください。データベース内のテーブル名に対応する名前は、デフォルトで構造体の名前になります。大文字を小文字に変換して「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 conf」に対応するテーブル名にエスケープされます。タグ内の名前に従って、対応するフィールド名が最初に検索されます。定義されたタグがない場合は、フィールドに従って検索されます構造体によって定義されています。検索する場合、構造体フィールドが検索されます。大文字は " " にエスケープされます。たとえば、「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
ログイン後にコピー

最初のものはコア ライブラリです。

2 つ目は、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)
ログイン後にコピー
#その他

##判定データベースは構造に対応するテーブルがあります:

db.HasTable(User{})
ログイン後にコピー

Create table

db.CreateTable(User{})
ログイン後にコピー

以上が gorm の基本的な使い方です。

以上がmysqlを操作するためのgolang gormとgormの基本的な使い方を紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート