- database/sql – 內建無需額外安裝
- github.com/jmoiron/sqlx – 是
database/sql
超集,增加了scan
內容到struct
- gorm.io/gorm – 全功能ORM , 和java的一些 orm 類似。 可以設定 關聯 等。
這篇文章介紹 sqlx 。在項目中我們通常可能會使用database/sql連接MySQL資料庫。sqlx可以認為是Go語言內置database/sql的超集。增加了 scan 內容到 struct
,並增加了一些 Get(),Select() 等函數。
安裝:
go get -u github.com/jmoiron/sqlx
同樣需要安裝 github.com/go-sql-driver/mysql,並加載:
import (
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
連結資料庫:
db, _ := sqlx.Open("mysql", "root:xxx@tcp(127.0.0.1:3306)/test_db?charset=utf8")
查詢:
type User struct {
Id int `db:"id"` // 必須大寫Id, 格式必須是 `db:"id"` 要有 : 要有 ""
User string `db:"user"`
Password string `db:"password"`
}
func main() {
...
var u2 User
db.Get(&u2, "select * from user where id = ?", 1)
fmt.Println(u2)
u3 := []User{}
db.Select(&u3, "select * from user limit 2")
fmt.Println(u3)
...
}
插入&更新&刪除:
sqlStr := "insert into user(name, password) values (?,?)"
ret, err := db.Exec(sqlStr, "沙河小王子","xxxxxx")
sqlStr := "update user set name=? where id = ?"
ret, err := db.Exec(sqlStr, 39, "xxxxx")
sqlStr := "delete from user where id = ?"
ret, err := db.Exec(sqlStr, 6)
參考: http://jmoiron.github.io/sqlx/