go 언어 orm 프레임 워 크--xorm
24971 단어 go.
mysql 드라이버 설치:go get github.com/go-sql-driver/mysql
package main import ("database/sql""fmt"_ "github.com/go-sql-driver/mysql")func checkErr(errMasg error) {if errMasg != nil {panic(errMasg)}}func printResult(query *sql.Rows) {column, _ := query.Columns() //values := make([][]byte, len(column)) //values , bytescans := make([]interface{}, len(column)) // , len(column)for i := range values { // [][]bytescans[i] = &values[i]}results := make(map[int]map[string]string) // mapi := 0for query.Next() { // ,if err := query.Scan(scans...); err != nil {//query.Scan scans[i] = &values[i], valuesfmt.Println(err)return}row := make(map[string]string) //for k, v := range values { // values , rowkey := column[k]row[key] = string(v)}results[i] = row //i++}for k, v := range results { //fmt.Println(k, v)}}func main() {db, err := sql.Open("mysql", "yuanye:yuanye@tcp(127.0.0.1:3306)/test?charset=utf8")checkErr(err)// sql userdb.Query("create table user(id int primary key , username varchar(20), password varchar(20))")// userdb.Query("insert into user(username,password) values('yy', '123456')")//v, err := db.Query("select * from user")checkErr(err)//printResult(v)db.Query("update user set username = 'tt'")//v, err = db.Query("select * from user")checkErr(err)//printResult(v)db.Query("delete from user where id = 1")}
xorm 기본 동작 사용
xorm 프레임 워 크 설치 go get github.com/go-xorm/cmd/xormpackage mainimport ("fmt"_ "github.com/go-sql-driver/mysql""github.com/go-xorm/xorm")type Person struct {Id int64 `xorm:"pk autoincr"`Name string `xorm:"varchar(25) notnull unique"`}var engine *xorm.Enginefunc checkErr(errMasg error) {if errMasg != nil {panic(errMasg)}}func main() {var err error//engine, err = xorm.NewEngine("mysql", "yuanye:yuanye@tcp(127.0.0.1:3306)/test?charset=utf8")checkErr(err)// sql , falseengine.ShowSQL(true)//err = engine.Sync2(new(Person))p := Person{Name: "yuanye",}//engine.Insert(&p)// id 1p1 := Person{}engine.Id(1).Get(&p1)fmt.Println(p1)// name yuanyep2 := Person{}engine.Where("name = ?", "yuanye").Get(&p2)fmt.Println(p2)// userp3 := &Person{Name: "yuanye"}has, _ := engine.Get(p3)fmt.Println(has)//p4 := new(Person)total, _ := engine.Where("name = ?", "yuanye").Count(p4)fmt.Println(total)// name “yy”p5 := Person{Name: "yy"}engine.Id(1).Update(&p5)//find , 、map , wherep6 := make([]Person, 0)engine.Find(&p6)fmt.Println(p6)// id=1p7 := Person{}engine.Id(1).Delete(&p7)has, _ = engine.Id(1).Get(&p7)fmt.Println(has)}
데이터베이스 열 속성 정의:
구체 적 인 태그 규칙 은 다음 과 같 습 니 다.다른 태그 의 키 워드 는 대소 문 자 를 구분 하지 않 지만 필드 이름 은 데이터베이스 에 따라 대소 문 자 를 구분 합 니 다.
name
현재 field 에 대응 하 는 필드 의 이름 을 선택 할 수 있 습 니 다.쓰 지 않 으 면 field 이름과 변환 규칙 에 따라 자동 으로 이름 을 짓 습 니 다.다른 키워드 와 충돌 할 경우 작은 따옴표 로 묶 으 십시오.
pk
Primary Key 인지 여 부 는 하나의 struct 에 여러 필드 가 이 표 시 를 사용 했다 면 이 여러 필드 는 복합 메 인 키 를 구성 합 니 다.단일 메 인 키 는 현재 int 32,int,int 64,uint 32,uint,uint 64,string 등 7 가지 Go 의 데이터 형식 을 지원 합 니 다.복합 메 인 키 는 이 7 가지 Go 의 데이터 형식의 조합 을 지원 합 니 다.
현재 30 여 개의 필드 형식 을 지원 합 니 다.자세 한 내용 은 본 논문 의 마지막 표를 참조 하 십시오.
필드 형식
autoincr
증가
[not]null 또는 notnull
비어 있 을 수 있 습 니까?
unique 혹은 unique(uniquename)
유일한 것 인지,괄호 를 넣 지 않 으 면 이 필드 는 중복 할 수 없습니다.괄호 를 넣 으 면 괄호 안에 유일한 색인 을 연결 하 는 이름 입 니 다.이 때 다른 필드 나 여러 필드 가 이 유 니 크 한 유 니 크 name 과 같 으 면 이 유 니 크 name 같은 필드 는 하나의 색인 을 구성 합 니 다.
index 또는 index(indexname)
색인 인지 여부 입 니 다.괄호 를 넣 지 않 으 면 이 필드 자체 가 색인 입 니 다.괄호 를 넣 으 면 괄호 안에 연합 색인 이름 이 있 습 니 다.이 때 다른 필드 나 여러 필드 가 이 index 의 indexname 과 같 으 면 이 indexname 과 같은 필드 가 연합 색인 을 구성 합 니 다.
extends
익명 의 구성원 구조 체 나 비 익명 의 구성원 구조 체 에 적용 되 며,이 구조 체 의 모든 구성원 이 데이터베이스 에 반영 되 었 음 을 나타 내 며,extends 는 1 급 깊이 만 불 러 옵 니 다.
-
이 Field 는 필드 맵 을 하지 않 습 니 다.
->
이 Field 는 데이터베이스 에서 읽 지 않 고 데이터베이스 에 만 기록 합 니 다.
이 Field 는 데이터베이스 에 쓰 지 않 고 데이터베이스 에서 만 읽 을 것 입 니 다.
created
이 Field 는 Insert 에서 현재 시간 으로 자동 대 입 됩 니 다.
updated
이 Field 는 Insert 나 Update 에서 현재 시간 으로 자동 대 입 됩 니 다.
deleted
이 Field 는 Delete 시 현재 시간 으로 설정 되 며 현재 기록 은 삭제 되 지 않 습 니 다.
version
이 Field 는 insert 시 기본 값 이 1 이 며,업데이트 할 때마다 자동 으로 1 이 추 가 됩 니 다.
default 0
기본 값 을 설정 합 니 다.
xorm 문서:https://www.kancloud.cn/kancloud/xorm-manual-zh-cn/56017
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
go 의 값 전달 과 참조 전달절편 과 지 도 는 모두 인용 유형 이다.현지에서 새로운 변수 로 할당 되 었 을 때 같은 내부 데이터 구 조 를 가리킨다.따라서 그 중의 한 변 수 를 바 꾸 면 다른 변수 에 영향 을 줄 수 있다. 다음은 참조 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.