小小千想和您聊一聊

当前位置: 首页> 技术分享> 创建数据库和数据表

创建数据库和数据表

背景介绍

上节课我们已经接入了第三方的短信服务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 stringxorm:"varchar(30)" json:"biz_id" Code stringxorm:"varchar(4)" json:"code" CreateTime int64xorm:"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 ""

} ```

附: 课程全部文档均可以在千锋教育Go语言day100学习库获取,学习库链接:Golang 100天从新手到大师

视频教程可以访问B站主页进行学习:B站

Go语言课程专题学习网站:Go语言专题学习

上一篇:算术移位和逻辑移位实现分析

下一篇:5G对web前端发展的影响

QQ技术交流群

千锋go语言官方①群
816085262

加入群聊

用户登录

手机号:

密码:

图形验证码:

点击切换

用户注册

手机号:

登录密码:

图形验证码:

点击切换

短信验证码:

获取验证码

忘记密码

1安全验证

2重置密码

手机号:

图形验证码:

短信验证码:

获取验证码

忘记密码

1安全验证

2重置密码

新密码:

确认新密码:

获取课程

添加小千老师微信,获取课程信息

如何获取课程?

一、需拥有此本教材

如没有,可点击下方入口购买当当购买入口京东购买入口

二、添加小千老师,发送拥有凭证,解锁课程资源

1.购买该教材的订单信息
2.拥有的实体书信息等

更换手机号

新手机号:

图形验证码:

短信验证码:

获取验证码