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 ", err) return } sqlStr1 := `select id, name, age from user where id=1` var u user db.Get(&u, sqlStr1) //通过反射知道u有什么字段 fmt.Printf("u:%#v ", 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 ", err) return } fmt.Printf("userList:%#v ", userList) }
SQL中的占位符
不同的数据库中,SQL语句使用的占位符语法不尽相同。
数据库 | 占位符语法 |
---|---|
MySQL | ? |
PostgreSQL | $1 , $2 等 |
SQLite | ? 和$1 |
Oracle | :name |