MySQL資料庫5:Go與MySQL的互動
阿新 • • 發佈:2018-12-21
下載第三方依賴
go get github.com/jmoiron/sqlx
go get github.com/go-sql-driver/mysql
引入依賴
import (
"github.com/jmoiron/sqlx"
//執行mysql包的init方法
_"github.com/go-sql-driver/mysql"
"fmt"
)
建立測試資料庫表
create database mydb charset=utf8; use mydb; create table person( id int primary key auto_increment, name varchar(20) unique not null, age int default 0, dollar float default 1 ); alter table person add sex bool; alter table person add schoolday date; alter table person add birthtime datetime;
定義與資料表向匹配的結構體
/*
id | name | poem | age | dollar | sex | schoolday | birthtime
*/
type Person struct {
//所有屬性必須公開——框架會轉化查詢結果為結構體物件
//標籤名寫法:`db:"表字段名"`
Name string `db:"name"`
Age int `db:"age"`
Dollar float32 `db:"dollar"`
}
執行增刪改查操作
- 增刪改的方式是db.Exec(sql)
- 查詢的方式是:db.select(&model,sql)
func main() { //連線資料庫 db, _ := sqlx.Open("mysql", "root:
[email protected](127.0.0.1:3306)/mydb") defer db.Close() //執行增刪改,獲得受影響的行數 result, _ := db.Exec("insert into person(name,age,sex,schoolday,birthtime) values(?,?,?,?,?);", "雙黃蛋", 35, false, 20080813, 20180814164300) rowsAffected, _:= result.RowsAffected() lastInsertId, _ := result.LastInsertId() fmt.Println("受影響的行數",rowsAffected,"最後一條記錄的id",lastInsertId) //執行增刪改 db.Exec("insert into person(name,age,sex,schoolday,birthtime) values(?,?,?,?,?);", "雙黃蛋", 35, false, 20080813, 20180814164300) db.Exec("delete from person where id=?;", 2) db.Exec("update person set name=? where name=?;", "張倆蛋","張全蛋") //執行查詢,獲得person物件 //用於接收的資料型別是【結構體切片】,必須包含查詢欄位對應的公開屬性,屬性標籤應寫作:`db:"表字段名"` var ps []Person //第一個引數是【結構體切片】的地址 err := db.Select(&ps, "select name,age,dollar from person where name like ?;", "%蛋") if err!=nil{ fmt.Println("err=",err) } fmt.Printf("%T,%v\n", ps, ps) fmt.Println("執行成功!") }
清華團隊帶你實戰區塊鏈開發
掃碼獲取海量視訊及原始碼 QQ群:721929980