다음 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!