使用gin與gorm開發(fā)CRUD操作

gin啟動

昨天學習到gin如何返回一個json數(shù)據(jù)之后蝗羊,希望按照往常的開發(fā)經(jīng)驗添寺,定義統(tǒng)一的返回報文體褪猛,于是定義了以下結構

type BaseResponse struct {
    code    string
    message string
}

然而使用下面的代碼返回的數(shù)據(jù)一直是{}

func main() {
    r := gin.Default()
    r.GET("/hello", hello)
    r.Run() // listen and serve on 0.0.0.0:8080
}

func hello(c *gin.Context) {
    res := &BaseResponse{
        code:    "000000",
        message: "hello world",
    }
    c.JSON(200, res)
}

自己研究源碼搗鼓半天也沒弄出來個所以然赌结,于是查閱資料才知道犯了一個很基礎的錯誤吭露。c.JSON方法底層使用了json.Marshal來序列化參數(shù)吠撮,這個方法只能序列化公有屬性,也就是說要把BaseResponse中字段的首字母大寫讲竿。首字母大寫表示公有可導出的泥兰,小寫是私有,這個知識點在GO中是比較基礎的题禀,很多地方都會用到鞋诗,需要牢記。

gin結合gorm

接下來就開始使用gorm來進行crud操作了迈嘹。我在service.go文件中提供了數(shù)據(jù)庫連接的配置與初始化方法削彬,在server.go文件中首先初始化數(shù)據(jù)庫連接,再啟動web容器接收請求秀仲。

  • server.go
type BaseResponse struct {
    Code    string
    Message string
}

func main() {
    ConfigDb("1", "2", "3", 4, "5")
    InitDb()
    defer Db.Close()

    r := gin.Default()
    r.POST("/author", addAuthor)
    r.Run("localhost:2046")
}

func addAuthor(c *gin.Context) {
    author := &Author{
        AuthorName: c.Query("AuthorName"),
        CreateTime: time.Now(),
    }
    NewAuthor(*author)
    message := fmt.Sprintf("Create author with name : %s", author.AuthorName)
    res := &BaseResponse{
        Code:    "000000",
        Message: message,
    }
    c.JSON(200, res)
}
  • service.go
type DBConfig struct {
    user, pw, host string
    port int
    dbName string
}

var config *DBConfig
var Db *gorm.DB

func ConfigDb(user, pw, host string, port int, dbName string) {
    config = &DBConfig{
        user:   user,
        pw:     pw,
        host:   host,
        port:   port,
        dbName: dbName,
    }
}

func InitDb() *gorm.DB {
    if config == nil {
        panic("Do configuration first!")
    }
    // connect to mysql
    connStr := fmt.Sprintf("%s:%s@(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", config.user, config.pw, config.host, config.port, config.dbName)
    var err error
    Db, err = gorm.Open("mysql", connStr)
    if err != nil {
        panic("Connect to database fail")
    }
    Db.SingularTable(true)
    Db.LogMode(true)
    return Db
}

// crud
func NewAuthor(author Author) {
    Db.Create(&author)
}

簡單地做了一個邏輯處理融痛,發(fā)送post請求localhost:2046/author?AuthorName=xxx,然后在數(shù)據(jù)庫中新增一條author記錄神僵,返回結果成功雁刷。

{
"Code": "000000",
"Message": "Create author with name : xxx"
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市保礼,隨后出現(xiàn)的幾起案子沛励,更是在濱河造成了極大的恐慌,老刑警劉巖氓英,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侯勉,死亡現(xiàn)場離奇詭異鹦筹,居然都是意外死亡铝阐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門铐拐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來徘键,“玉大人练对,你說我怎么就攤上這事〈岛Γ” “怎么了螟凭?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長它呀。 經(jīng)常有香客問我螺男,道長,這世上最難降的妖魔是什么纵穿? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任下隧,我火速辦了婚禮,結果婚禮上谓媒,老公的妹妹穿的比我還像新娘淆院。我一直安慰自己,他們只是感情好句惯,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布土辩。 她就那樣靜靜地躺著,像睡著了一般抢野。 火紅的嫁衣襯著肌膚如雪拷淘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天指孤,我揣著相機與錄音辕棚,去河邊找鬼。 笑死邓厕,一個胖子當著我的面吹牛逝嚎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播详恼,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼补君,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昧互?” 一聲冷哼從身側響起挽铁,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎敞掘,沒想到半個月后叽掘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡玖雁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年更扁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡浓镜,死狀恐怖溃列,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情膛薛,我是刑警寧澤听隐,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站哄啄,受9級特大地震影響雅任,放射性物質發(fā)生泄漏。R本人自食惡果不足惜咨跌,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一椿访、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虑润,春花似錦成玫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冗澈,卻和暖如春钦勘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亚亲。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工彻采, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捌归。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓肛响,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惜索。 傳聞我的和親對象是個殘疾皇子特笋,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361