项目地址
https://github.com/mangenotwork/CLI-Sichuan-Mahjong
Grom
https://learnku.com/docs/gorm/v1/connecting_to_the_database/3784
封装一下
package db
import (
"fmt"
"log"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/mysql"
)
var MysqlDB *gorm.DB
func InitMysqlDB(user, pass, host, port, dbname string) {
var err error
dsn := 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.go
package models
import (
"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 dao
import (
"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) *userDao
WhereName(name string) *userDao
Create(user models.User) error
IsHave(userName string) bool
Get() (models.User, error)
}
type userDao struct {
id int64 // 查询字段id
name string // 查询字段name
}
func (d *userDao) WhereId(id int64) *userDao {
d.id = id
return d
}
func (d *userDao) WhereName(name string) *userDao {
d.name = name
return d
}
func (d *userDao) Get() (models.User, error) {
var (
data models.User
err error
ok = false
dbConn = db.MysqlDB
)
dbConn = dbConn.Table(data.TableName())
if d.id != 0 {
ok = true
dbConn = dbConn.Where("id=?", d.id)
}
if len(d.name) > 0 {
ok = true
dbConn = 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 = userName
data, _ := d.Get()
if data.Id > 0 {
return true
}
return false
}
func (d *userDao) Create(user models.User) error {
var dbConn = db.MysqlDB
return 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.youkuaiyun.com/Man_ge/article/details/120226415
下一篇

这篇博客介绍了如何在Golang中使用Gorm库连接和操作MySQL数据库,包括初始化数据库连接、设置最大连接数以及创建用户表。同时展示了User实体的定义和UserDao层的实现,用于用户数据的增删改查操作。通过UserDao的Where方法和Get方法,可以方便地根据ID和用户名查询用户信息。
2331

被折叠的 条评论
为什么被折叠?



