golang – sqlx

這篇文章介紹 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/