13、使用xorm操作数据库---建立用户模型&数据库增删改查基本API

单元目标

  • 用xorm实现增删改查

  • 案例:以注册为例

一、用xorm实现数据库的增删改查

这个文档已经梳理出了数据库增删改查一般套路

13、使用xorm操作数据库---建立用户模型&数据库增删改查基本API - 图1

 

二、以用户系统为例,定义模型层

新建model层的user文件

13、使用xorm操作数据库---建立用户模型&数据库增删改查基本API - 图2

定义用户结构体 

13、使用xorm操作数据库---建立用户模型&数据库增删改查基本API - 图3

package model
import "time"
type User struct {
    //用户id
    Id int64 `xorm:"pk autoincr bigint(20)" form:"id" json:"id"`
    //手机号 唯一的
    Mobile string `xorm:"varchar(20)" form:"mobile" json:"mobile"`
    //用户密码 f(plainpwd+salt),MD5
    Passwd string `xorm:"varchar(40)" form:"passwd" json:"-"`
    //头像
    Avatar string `xorm:"varchar(150)" form:"avatar" json:"avatar"`
    //性别
    Sex string `xorm:"varchar(2)" form:"sex" json:"sex"`
    //昵称
    Nickname string `xorm:"varchar(20)" form:"nickname" json:"nickname"`
    // 随机数
    Salt string `xorm:"varchar(10)" form:"salt" json:"-"`
    //是否在线
    Online int `xorm:"int(10)" form:"online" json:"online"`
    //前端用户登录鉴权 chat?id=1&token=x
    Token string `xorm:"varchar(40)" form:"token" json:"token"`
    Memo  string `xorm:"varchar(140)" form:"memo" json:"memo"`
    //统计每天用户增量时间
    Createat time.Time `xorm:"datetime" form:"createat" json:"createat"`
}

 

在模型层定义性别常量及使用

 

13、使用xorm操作数据库---建立用户模型&数据库增删改查基本API - 图4

三、定义服务层

 服务层service,专门用来存放数据库业务服务的,如:注册、登录,CURD相关API

13、使用xorm操作数据库---建立用户模型&数据库增删改查基本API - 图5

//三、定义和业务相关的服务
服务层service,专门用来存放数据库业务服务的,如
注册、登录
       //2、查询单个用户Find,参数userId
       DbEngin.ID(userId).Get(&User)
       //3、查询满足某一类条件的Search
       result :=make([]User,0)
        //Find得到多条记录
       DbEngin.where("mobile=? ",moile).Find(&result)
        //Get得到一条记录
       DbEngin.where("mobile=? ",moile).Get(&User) 
     //4、创建一条记录Create
       DBengin.InsertOne(&User)
    //5、修改某条记录Update
     DBengin.ID(userId).Update(&User)
     // update ... where id = xx
     DBengin.Where("a=? and b=?",a,b).Update(&User)
     //Cols只修改某一个字段
     DBengin.Where("a=? and b=?",a,b).Cols("nick_name").Update(&User)
        //6、删除某条记录Delete
     DBengin.ID(userId).Delete(&User)

 

四、密码相关

 
import (
    "crypto/md5"
    "encoding/hex"
    "strings"
)
//密码加密
func Md5Encode(data string) string{
    h := md5.New()
    h.Write([]byte(data)) // 需要加密的字符串为 123456
    cipherStr := h.Sum(nil)
    return  hex.EncodeToString(cipherStr)
}
//密码转大写
func MD5Encode(data string) string{
    return strings.ToUpper(Md5Encode(data))
}
//验证密码
func ValidatePasswd(plainpwd,salt,passwd string) bool{
    return Md5Encode(plainpwd+salt)==passwd
}
//创建加密密码
func MakePasswd(plainpwd,salt string) string{
    return Md5Encode(plainpwd+salt)
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值