package main
import (
"fmt"
"time"
// 只执行包内的初始化函数(init)
_ "github.com/go-sql-driver/mysql"
"github.com/jmoiron/sqlx"
)
type User struct {
Id int
UserName string
}
func connMysql() *sqlx.DB {
Db, err := sqlx.Open("mysql", "root:123.com@tcp(127.0.0.1:3306)/test01?charset=utf8")
if err != nil {
fmt.Printf("err: %v\n", err)
}
return Db
}
// 查询
func querData(Db *sqlx.DB) {
sql := "SELECT * FROM users"
// 调用查询方法,h获取结果集
r, err := Db.Query(sql)
// 调用关闭方法释放结果集
defer r.Close()
if err != nil {
fmt.Printf("err: %v\n", err)
}
// 遍历结果集
for r.Next() {
// 创建实体
var id int
var name string
// 写入结构体
r.Scan(&id, &name)
fmt.Println(id, "-", name)
}
// fmt.Printf("r: %v\n", r)
}
//增加
func insertData(Db *sqlx.DB) {
user := User{3, "wangwu2"}
sql := "INSERT INTO users VALUES (?,?)"
r, _ := Db.Exec(sql, user.Id, user.UserName)
// 可以获得id 和行数
row, _ := r.LastInsertId()
fmt.Printf("row: %v\n", row)
}
// 修改
func updateData(Db *sqlx.DB) {
sql := "update users set username='lilei' where id=3"
r, err := Db.Exec(sql)
if err != nil {
fmt.Printf("err: %v\n", err)
}
fmt.Printf("r: %v\n", r)
}
// 删除
func deleteData(Db *sqlx.DB) {
sql := "delete from users where id=2"
r, err := Db.Exec(sql)
if err != nil {
fmt.Println(err)
}
fmt.Println(r.RowsAffected())
}
//数据写入结构体 一条
func getData(Db *sqlx.DB) {
var user *User = new(User)
sql := "SELECT * FROM users where id=3 "
err := Db.Get(user, sql)
if err != nil {
fmt.Printf("err: %v\n", err)
}
fmt.Println(user.Id, user.UserName)
}
// 数据写入结构体切片 多条
func selectData(Db *sqlx.DB) {
// 声明切片
var userSlice []User
sql := "SELECT * FROM users"
err := Db.Select(&userSlice, sql)
if err != nil {
fmt.Printf("err: %v\n", err)
}
// 遍历切片
for _, v := range userSlice {
fmt.Println(v.Id, "-", v.UserName)
}
}
func main() {
Db := connMysql()
// 设置连接池链接数据库的最大数,默认0 不限制
Db.SetMaxOpenConns(10)
// 设置连接池中保持链接的最大数,默认0,表示不保持
Db.SetMaxIdleConns(10)
// 设置链接的最长时间过期链接被拒绝
Db.SetConnMaxIdleTime(time.Second * 10)
fmt.Printf("Db: %v\n", Db)
// querData(Db)
// updateData(Db)
// deleteData(Db)
// getData(*Db)
selectData(Db)
}
导入包,在包根目录执行
go get "github.com/go-sql-driver/mysql"
go get "github.com/jmoiron/sqlx"