sqlx使用
第三方库sqlx能够简化操作,提高开发效率。
安装
go get github.com/jmoiron/sqlx
package main
import (
"fmt"
"github.com/jmoiron/sqlx"
_ "github.com/go-sql-driver/mysql" // init()
)
// Go连接MySQL示例
var db *sqlx.DB // 是一个连接池对象
func initDB() (err error) {
// 数据库信息
// 用户名:密码@tcp(ip:端口)/数据库的名字
dsn := "root:root@tcp(127.0.0.1:3306)/sql_test"
// 连接数据库
db, err = sqlx.Connect("mysql", dsn)
if err != nil {
return
}
db.SetMaxOpenConns(10) // 设置数据库连接池的最大连接数
db.SetMaxIdleConns(5) // 设置最大空闲连接数
return
}
type user struct {
ID int
Name string
Age int
}
func main() {
err := initDB()
if err != nil {
fmt.Printf("init DB failed, err:%v\n", err)
return
}
sqlStr1 := `select id, name, age from user where id=1`
var u user
db.Get(&u, sqlStr1) //通过反射知道u有什么字段
fmt.Printf("u:%#v\n", u)
var userList []user
sqlStr2 := `select id,name, age from user`
err = db.Select(&userList, sqlStr2)
if err != nil {
fmt.Printf("select failed, err:%v\n", err)
return
}
fmt.Printf("userList:%#v\n", userList)
}
SQL中的占位符
不同的数据库中,SQL语句使用的占位符语法不尽相同。
数据库占位符语法
MySQL
?
PostgreSQL
$1, $2等
SQLite
? 和$1
Oracle
:name