1. 程式人生 > >MySQL資料庫5:Go與MySQL的互動

MySQL資料庫5:Go與MySQL的互動

下載第三方依賴

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
在這裡插入圖片描述