golang の次のチュートリアル コラムでは、mysql と gorm を操作するための golang gorm の基本的な使い方を紹介します。
golang 公式のものはmysqlの操作が少し面倒なのでgormを使用しました gormの使い方を簡単に紹介しますgorm:##をダウンロードしてください#go get -u github.com/jinzhu/gormgorm をプロジェクトに導入します:
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{})
以上がmysqlを操作するためのgolang gormとgormの基本的な使い方を紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。