栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

golang mysql 创建表

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

golang mysql 创建表

背景介绍

上节课我们已经接入了第三方的短信服务SDK功能,可以接受短信验证码。在用户接受到验证码以后,输入验证码进行登录,我们需要验证用户输入的验证码是否正确。

因此,我们需要将发送过的验证码通过持久化的方式保存下来,方便我们进行校验。

我们选择通过数据库来存储用户手机验证码。

xorm介绍

在项目开发过程中,我们会使用一些成熟的框架来操作数据库。xorm就是一个比较流行的数据库操作orm框架。

xorm安装及mysql驱动

使用如下命令安装xorm:

go get github.com/go-xorm/xorm

安装mysql驱动:

go get github.com/go-sql-driver/mysql

连接数据库

在连接数据库之前,首先要创建数据库。在mysql中创建cloudrestaurant数据库:

create database cloudrestaurant;

创建完数据库并安装好xorm库以后,使用xorm进行连接数据库。具体的连接操作如下所示:

import (

"github.com/go-xorm/xorm"

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

)

database := cfg.Database

conn := database.User + ":" + database.Password + "@tcp(" + database.Host + ":" + database.Port + ")/" + database.DbName + "?charset=" + database.Charset

engine, err := xorm.NewEngine(database.Driver, conn)

if err != nil {

return nil, err

}

...

连接数据库有些参数需要自己指定,比如说驱动类型,登录数据库的用户名,密码,数据库名等。将这些变量配置在app.json配置文件中,如下所示:

{

...

"database": {

"driver": "mysql",

"user": "root",

"password": "12345678",

"host": "127.0.0.1",

"port": "3306",

"db_name": "cloudrestaurant",

"charset": "utf8mb4",

"show_sql": true

}

...

}

并在Config结构体中添加对dtabase的解析:

type Config struct {

AppName string json:"app_name"

AppMode string json:"app_mode"

AppHost string json:"app_host"

AppPort string json:"app_port"

Database DatabaseConfig json:"database"

Sms SmsConfig json:"sms"

}

type DatabaseConfig struct {

Driver string json:"driver"

User string json:"user"

Password string json:"password"

Host string json:"host"

Port string json:"port"

DbName string json:"db_name"

Charset string json:"charset"

ShowSql bool json:"show_sql"

}

...

创建SmsCode

要存储验证码,需要在数据库中创建表结构进行存储。我们可以创建SmsCode结构体,并通过tag设置数据库字段约束,具体的SmsCode定义如下:

package model

type SmsCode struct {

Id int64 xorm:"pk autoincr" json:"id"

Phone string xorm:"varchar(11)" json:"phone"

BizId string xorm:"varchar(30)" json:"biz_id"

Code string xorm:"varchar(4)" json:"code"

CreateTime int64 xorm:"bigint" json:"create_time"

}

通过tag的xorm设置字段数据类型以及约束。

pk:表示主键

autoinc:表示自增

bigint:整形变量

varchar:字符串类型

Sync2同步生成数据库表

可以调用engine.Sync2方法,将结构体类型同步映射到数据库中,生成数据库表。

err = engine.Sync2(new(model.SmsCode))

if err != nil {

return nil, err

}

...

将验证码数据保存到数据库中

在MemberService的SendCode方法,添加保存验证码到数据库的操作:

func (msi *MemberServiceImpl) SendCode(phone string) string {

code := fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))

...

dao := impl.NewMemberDao()

smsCode := model.SmsCode{Phone: phone, Code: code, BizId: response.BizId, CreateTime: time.Now().Unix()}

if result := dao.InsertCode(smsCode); result > 0 {

return code

}

return ""

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/945436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号