项目地址

https://github.com/mangenotwork/CLI-Sichuan-Mahjong

Grom

https://learnku.com/docs/gorm/v1/connecting_to_the_database/3784

封装一下

package dbimport ("fmt""log""github.com/jinzhu/gorm"_ "github.com/jinzhu/gorm/dialects/mysql")var MysqlDB *gorm.DBfunc InitMysqlDB(user, pass, host, port, dbname string) {var err errordsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", user, pass, host, port, dbname) + "?charset=utf8mb4&parseTime=true&loc=Local&timeout=5s"log.Println("连接数据 = ", dsn)MysqlDB, err = gorm.Open("mysql", dsn)if err != nil {panic(err)}MysqlDB.LogMode(true)MysqlDB.DB().SetMaxIdleConns(10)MysqlDB.DB().SetMaxOpenConns(20)
}func GetMysqlDB() *gorm.DB {return MysqlDB
}

调用方

User 实体

// models/User.gopackage modelsimport ("log""github.com/mangenotwork/CLI-Sichuan-Mahjong/common/db"
)type User struct {Id int64 `gorm:"primary_key;column:id;size:11" json:"id"`Name string `gorm:"column:user_name;size:20" json:"user_name"`Password string `gorm:"column:password;size:32" json:"password"`
}//TableName  默认获取table name
func (*User) TableName() string {return "tbl_user"
}//CreateTable 创建表
func (u *User) CreateTable(){if !db.MysqlDB.HasTable(u.TableName()) {log.Println("CreateTable User")db.MysqlDB.CreateTable(&User{})}

User Dao层,增删改查

// dao/User.go
package daoimport ("errors""github.com/mangenotwork/CLI-Sichuan-Mahjong/Server/models""github.com/mangenotwork/CLI-Sichuan-Mahjong/common/db"
)func User() UserDaoInterface{return &userDao{}
}type UserDaoInterface interface {WhereId(id int64) *userDaoWhereName(name string) *userDaoCreate(user models.User) errorIsHave(userName string) boolGet() (models.User, error)
}type userDao struct {id int64  // 查询字段idname string    // 查询字段name
}func (d *userDao) WhereId(id int64) *userDao {d.id = idreturn d
}func (d *userDao) WhereName(name string) *userDao {d.name = namereturn d
}func (d *userDao) Get() (models.User, error) {var (data models.Usererr errorok = falsedbConn = db.MysqlDB)dbConn = dbConn.Table(data.TableName())if d.id != 0 {ok = truedbConn = dbConn.Where("id=?", d.id)}if len(d.name) > 0 {ok = truedbConn = dbConn.Where("user_name=?", d.name)}if ok {err = dbConn.First(&data).Error} else {err = errors.New("参数不够")}return data, err
}func (d *userDao) IsHave(userName string) bool {d.name = userNamedata, _ := d.Get()if data.Id > 0 {return true}return false
}func (d *userDao) Create(user models.User) error {var dbConn = db.MysqlDBreturn dbConn.Table(user.TableName()).Create(&user).Error
}

调用方

//查询user
user, _ := dao.User().WhereName(v.Name).Get()
//密码判断
if user.Id == 0 || user.Password != utils.MD5(v.Password) {//doing...
}

上一篇 2.Tcp通讯
https://blog.csdn.net/Man_ge/article/details/120226415

下一篇

基于Golang TCP 开发网络游戏 CLI四川麻将 - 3. 使用grom进行Mysql存储数据相关推荐

  1. 基于Golang TCP 开发网络游戏 CLI四川麻将 - 1.选型与结构定义

    项目介绍 基于golang tcp 开发的命令行界面网络游戏 四川麻将血战到底:下图是初步效果界面 项目地址 https://github.com/mangenotwork/CLI-Sichuan-M ...

  2. 基于Golang TCP 开发网络游戏 CLI四川麻将 - 2.Tcp通讯

    项目地址 https://github.com/mangenotwork/CLI-Sichuan-Mahjong 数据传输结构定义 这里使用gob序列化数据 // entity.gotype Tran ...

  3. 基于Castle ActiveRecord开发Domain Model详解(一)对象关系到数据表的映射

    Castle Project非常庞大,ActiveRecord是其中一个非常适合用于Domain Model开发的O/R Mapping框架.它使用.NET的反射特性无需配置文件,集成NHiberna ...

  4. 基于layuiCMS2.0开发后台管理系统,实现自定义分页并动态加载数据表格的示例...

    2019独角兽企业重金招聘Python工程师标准>>> 公司让做一个app基础数据管理后台系统,前端就以layuiCMS2.0为模板,拷贝到项目resources/static目录下 ...

  5. 「实战案例」基于Python语言开发的信用评分卡

    信用风险计量模型可以包括跟个人信用评级,企业信用评级和国家信用评级.人信用评级有一系列评级模型组成,常见是A卡(申请评分卡).B卡(行为模型).C卡(催收模型)和F卡(反欺诈模型). 今天我们展示的是 ...

  6. 基于SECS协议开发的简明教程

    很有必要把苦程序员久矣的SECS/GEM了结了,于是诞生了本系列文章八篇和开发包,不需要看近500页PDF就可以轻松完成SECS功能支持. 0.SECS SDK 开发包 这个开发包是对SEMI SEC ...

  7. 基于SECS协议开发的简明教程(7)

    接着前面6篇SECS/GEM开发教程系列. 基于SECS协议开发的简明教程(1)-怎么搭建支持SECS工程 基于SECS协议开发的简明教程(2)-怎么编辑交换数据的ID 基于SECS协议开发的简明教程 ...

  8. 基于SECS协议开发的简明教程(5)

    接着前面4篇SECS/GEM开发教程系列. 基于SECS协议开发的简明教程(1)-怎么搭建支持SECS工程 基于SECS协议开发的简明教程(2)-怎么编辑交换数据的ID 基于SECS协议开发的简明教程 ...

  9. 基于SECS协议开发的简明教程(4)

    本文的基础是前面的三篇,建议先花几分钟过一遍大概,然后接着看本篇,更系统化. 基于SECS协议开发的简明教程(1)-怎么利用SECS SDK搭建工程 基于SECS协议开发的简明教程(2)-怎么编辑交换 ...

最新文章

  1. 含有多个java程序的文件夹导入MyEclipes 出现错误的解决办法
  2. 【STM32】端口复用和重映射,完全重映射,部分重映射
  3. 以太坊是什么 - 以太坊开发入门指南
  4. 2021牛客多校7 - xay loves monotonicity(线段树区间合并)
  5. 大数据背后是个万亿市场
  6. 服务器上build.xml文件乱码解决(亲测有效)
  7. 前馈神经网络对mnist数据集实战
  8. JavaScript函数的两种声明方式(4)
  9. 更改Mysql 密码的4种方法(转)
  10. nginx相关概念——负载均衡和动静分离
  11. linux中的numa和swap
  12. 计算机多媒体技术英文,计算机多媒体技术在英语听力测试中的应用
  13. 【EMD和EEMD】EEMD工具箱使用
  14. 监控系统 服务器配置,监控系统服务器配置
  15. office picture manger图片处理工具下载与安装教程
  16. 山东专升本计算机知识点(中)
  17. 第十章:动态组件,插槽,自定义指令
  18. [ 深度学习 ] —— 优化策略:(1) Label Smoothing Regularization(LSR)
  19. 山东大学项目实训十六——可控音乐变压器Controllable Music Transformer
  20. node对文件的读取和修改

热门文章

  1. 项目经理经典面试题,学完你也是大经理!
  2. php 生成网页固定头,如何去除KingCMS PHP版头部自动生成的generator信息
  3. 5000家,金融信创试点来了,中小银行成主力
  4. IntelliJ IDEA 注册码
  5. Ralink RT5350简介
  6. Java集合接口的使用(笔记)
  7. 转载,envi对高光谱进行辐射定标和大气校正
  8. openjdk和jdk的区别与联系
  9. Windows Phone的应用程序认证要求
  10. java3D类简单说明