# 數據庫增刪改查一般套路
一、安裝初始化 xorm.NewSession(driverName,dataSourceName)
二、定義實體 模型層model或者實體層entity ##1、定義與表結構對應對象User
~~~go
type User struct {
Id int64 `xorm:"pk autoincr bigint(64)" form:"id" json:"id"`
Mobile string `xorm:"varchar(20)" form:"mobile" json:"mobile"`
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"` //是否在線
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"` // 什么角色
}
~~~
三、定義和業務相關的服務 服務層service,專門用來存放數據庫業務服務的,如 注冊、登錄
2、查詢單個用戶Find,參數userId
~~~
DbEngin.ID(userId).Get(&User)
~~~
3 、查詢滿足某一類條件的Search
~~~
//
result :=make([]User,0)
DbEngin.where("mobile=? ",moile).Find(&result)
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)
DBengin.Where("a=? and b=?",a,b).Cols("nick_name").Update(&User)
~~~
6、刪除某條記錄Delete
~~~
DBengin.ID(userId).Delete(&User)
~~~
7、MD5加密函數
~~~cgo
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)
}
~~~
四、控制器層調用
~~~go
var userServer server.UserServer
type UserCtrl struct{}
func (ctrl *UserCtrl)Register(w){
user = userServer.Register(mobile,passwd)
}
~~~
- 初認GOlang Web
- 關于環境配置
- 路由
- 路由進階與目錄架構
- 靜態文件服務器
- 自定義Middleware
- 與MySQL起舞
- 主從模式概念
- 部署主從集群
- 分庫分表
- 補充:事務
- 補充:常用SQL示例
- Template使用
- 一些小的,但是要知道的東西
- 調度任務
- 流控算法
- 鑒權
- JWT鑒權前置知識:加密解密
- session
- 文件上傳與下載
- 帶緩存讀寫拷貝io
- 參考
- 寫好的文件上傳
- 文件下載
- 拓展:秒傳功能實現
- 擴展:分塊上傳和斷點續傳
- 擴展:分塊上傳
- 擴展:斷點續傳
- 擴展:分布式存儲
- 部署ceph集群
- cephAuth
- go操作ceph集群
- 擴展:云存儲
- go操作oss
- 補充:xorm框架
- 命令小結
- 補充:xorm框架高級部分
- 補充
- MongoDB
- 基礎概念
- 簡簡單單NoSql
- 操作集合(Collection)
- 操作文檔(Document)
- 帶條件的文檔 db.find
- 復雜條件抽文檔 db.find
- redis
- redis操作
- go操作redis
- (新增)配置鑒權
- 密碼學
- 文件校驗算法
- 未來課程的安排
- RPC實踐
- 爬蟲
- 正則表達式
- 爬取手機號
- 爬取郵箱
- 爬取超鏈接
- 爬取身份證號
- 并發爬圖片
- 擴展:CICD
- GO實現自動化部署系統
- 國際化支持
- 并發帶來問題的解決
- GOWEB小知識
- Sync包講解
- sync.Pool
- 千萬級WebSocket消息推送
- 微服務入門:開篇
- 路由通訊
- RabbitMQ
- RabbitMQ工作原理和轉發模式
- Dcoker 下 RabbitMQ and Ui
- Go操作RabbitMQ
- 初步微服務
- go-micro
- 補充:consul
- 快速入門
- 補充:consul超時
- 微服務架構
- 微服務架構全景圖
- 服務注冊和發現
- raft協議基本概念
- raft協議leader選舉詳解
- raft協議日志復制詳解
- raft協議safefy詳解
- rpc調用個服務監控
- etcd
- 命令行使用
- Golang操作etcd
- GO操作etcd OP方式 (分布式鎖基礎)
- etcd 分布式集群樂觀鎖
- (新增)鑒權
- 服務注冊
- 服務發現原理
- 選項設計模式介紹
- 基于插件的注冊組建
- 課前知識
- etcd注冊開發1
- ffmpeg
- 2.0新的啟航
- 高可用Mysql
- mysql邏輯架構
- 常見的MySQL高可用方案
- 索引
- MYSQL調優
- 什么影響了MYSQL的性能
- Mysql 服務器參數配置
- Go深入并發
- 基本同步原語
- 擴展同步原語
- 原子操作
- M P G 模型
- 簡單的消息總線
- GoMicro入門
- GO任務池編寫
- GO依賴注入
- 一些補充
- golang defer在什么時候執行
- 分布式理論篇(面試吹牛必備)
- CAP理論
- Raft協議
- 保證注冊中心的可靠性
- 鏈路追蹤
- 怎么實現強一致性