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

尹成發表於2018-11-16

下載第三方依賴

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:123456@tcp(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("執行成功!")
}

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

[清華團隊帶你實戰區塊鏈開發]
(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:721929980

在這裡插入圖片描述

相關文章