go sqlx mysql,go sqlx基本使用

package main

// 数据库连接初始化

import (

"fmt"

_ "github.com/go-sql-driver/mysql" // mysql

"github.com/jmoiron/sqlx"

)

// DB 数据库模型

var DB *sqlx.DB

const dsn = "root:123456@tcp(127.0.0.1:3306)/golist"

type user struct {

ID int `json:"id" db:"id"`

Name string `json:"name" db:"name"`

Age int `json:"age" db:"age"`

}

// connect 1.连接数据库

func connect() (db *sqlx.DB, err error) {

db, err = sqlx.Connect("mysql", dsn)

db.SetMaxOpenConns(100) // 设置连接池最大连接数

db.SetMaxIdleConns(20) // 设置连接池最大空闲连接数

DB = db

if err != nil {

fmt.Println("数据库连接失败==>", err)

}

fmt.Println("数据库已连接!")

return

}

// 添加数据 Exec、MustExec

// MustExec遇到错误的时候直接抛出一个panic错误,程序就退出了;

// Exec是将错误和执行结果一起返回,由我们自己处理错误。 推荐使用!

func createUser() {

// 创建表

sql := `

CREATE TABLE user (

id bigint(20) NOT NULL AUTO_INCREMENT,

name varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '',

age int(11) NULL DEFAULT 0,

PRIMARY KEY (id) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 20 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact

`

_, err := DB.Exec(sql)

fmt.Println(err)

}

// 添加数据

func insertUser() {

sql := `insert into user (name, age) values ("lgx",18)`

res := DB.MustExec(sql)

fmt.Println(res.LastInsertId)

fmt.Println(res.RowsAffected)

}

// 更新数据

func updateUser() {

sql := `update user set name = ?, age = ? where id = ?`

res, err := DB.Exec(sql, "LGX", 28, 20)

fmt.Println(err, res)

}

// Get、QueryRowx: 查询一条数据

// QueryRowx可以指定到不同的数据类型中

func getNum() {

var num int

_ = DB.Get(&num, "select count(*) from user")

fmt.Printf("数据库一共有:%d 个用户\n", num)

var u user

_ = DB.Get(&u, "select name, id, age from user where id = ?", 20)

fmt.Printf("查找用户id==1的用户:%v \n", u)

}

// Select、Queryx:查询多条数据

// Queryx可以指定到不同的数据类型中

func getAll() {

sql := `select id, name ,age from user where id > 1`

var us []user

err := DB.Select(&us, sql)

fmt.Println(err, us)

}

// 删除

func deleteUser() {

sql := `delete from user where id = 20`

_, _ = DB.Exec(sql)

}

// 事务处理

func events() {

tx, _ := DB.Beginx()

_, err1 := tx.Exec("update user set age = 10 where id = 20")

_, err2 := tx.Exec("update user set age = 10 where id = 21")

fmt.Println(err1, err2)

if err1 != nil || err2 != nil {

tx.Rollback()

}

tx.Commit()

}

func main() {

db, _ := connect()

defer db.Close()

// 建表

// createUser()

// 添加数据

// insertUser()

// 修改数据

// updateUser()

// 查数据-Get

// getNum()

// 查数据-Select

// getAll()

// 事务

events()

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值