前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据库Go-sqlx实战

数据库Go-sqlx实战

原创
作者头像
爽朗地狮子
修改2022-10-20 11:25:43
4520
修改2022-10-20 11:25:43
举报
文章被收录于专栏:云原生系列云原生系列

一. 命令行安装

go get github.com/jmoiron/sqlx

二. model设计

代码语言:txt
复制
package model

import "time"

type User_Sqlx struct {
   UserId    int       `db:"user_id"`
   UserName  string    `db:"user_name"`
   Password  string    `db:"password"`
   Sex       int       `db:"sex"`
   Birthday  time.Time `db:"birthday"`
   LastLogin time.Time `db:"last_login"`
   BindPhone string    `db:"bind_phone"`
   RegTime   time.Time `db:"reg_time"`
}

三. 数据库增删改查

代码语言:txt
复制
package order

import (
   "fmt"
   "sql-operator/model"
   "time"

   "github.com/jmoiron/sqlx"
)

var db_sqlx *sqlx.DB

func ConnectSqlxDatabases() {
   var err error
   db_sqlx, err = sqlx.Connect("mysql", "root:Xcy3329257@(localhost)/db_common?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      fmt.Printf("connect DB failed, err:%v\n", err)
      return
   }
   println("sqlx数据库连接接成功")
}

func CloseSqlxDatabases() {
   db_sqlx.Close()
   println("sqlx数据库关闭成功")
}

func QueryUsers() {
   sqlStr := "SELECT * FROM db_common.users"
   var users []model.User_Sqlx

   err := db_sqlx.Select(&users, sqlStr)
   if err != nil {
      fmt.Printf("get failed, err:%v\n", err)
      return
   }
   for i := 0; i < len(users); i++ {
      fmt.Printf("i=%d value=%v \n", i, users[i])
   }
}

// 查询单条数据示例
func QueryRowUser() {
   sqlStr := "select * from users where user_id=?"
   var user model.User_Sqlx
   err := db_sqlx.Get(&amp;user, sqlStr, 1)
   if err != nil {
      fmt.Printf("get failed, err:%v\n", err)
      return
   }
   fmt.Printf("user_id:%d user_name:%s birthday:%v \n", user.UserId, user.UserName, user.Birthday)
}

func InsertSqlxUser() {
   _, err := db_sqlx.Exec("INSERT INTO users(user_name,password,sex,birthday,last_login,bind_phone,reg_time) VALUES (?,?,?,?,?,?,?)", "tomxiang_sqlx", "tomxiang_pwd", 1, time.Now(), time.Now(), "15817307777", time.Now())
   if err != nil {
      fmt.Printf("get failed, err:%v\n", err)
      return
   }
   println("sqlx数据库插入成功!")

   println("sqlx插入之后的数据如下:")
   QueryUsers()
}

func DeleteSqlxUser() {
   _, err := db_sqlx.Exec("delete from users where user_id = ?", 17)
   if err != nil {
      fmt.Printf("get failed, err:%v\n", err)
      return
   }
   println("sqlx数据库删除成功!")

   println("sqlx删除之后的数据如下:")
   QueryUsers()
}

func UpdateSqlxUser() {
   _, err := db_sqlx.Exec("update users set birthday = ? where user_id = 3", time.Now())
   if err != nil {
      fmt.Printf("get failed, err:%v\n", err)
      return
   }
   println("sqlx数据库更新成功!")

   println("sqlx更新之后的数据如下:")
   QueryUsers()
}

参考链接

1.sqlx库使用指南

2.[Mac 10.13.4] 使用Homebrew安装Mysql全过程

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 命令行安装
  • 二. model设计
  • 三. 数据库增删改查
  • 参考链接
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档