[封装]实战gorm

本文介绍了如何在实际开发中封装gorm,通过创建基础结构体和接口,简化数据库操作。包括入口文件、数据库连接、数据实体、初始化、依赖加载和测试用例的编写。封装后的gorm使用更直观,依赖关系明确,能快速进行数据表的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

gorm以面向对象的编码方式对数据库读写操作进行了封装,将每一个数据实体当作一个结构体(类)进行处理。本片文章从实际开发中所遇问题和新的需求,对gorm进行一次封装,以此加快开发速度。

首先介绍代码架构:

|-----------------------
|- component
|-- db.go
|-- model.go
|-- test.go
|- include
|-- container.go
|-- db.go
|- init
|-- init.go
|- model
|-- bean
|--- messageRegister.go
|-- messageRegister.go
|- test
|-- messageRegister.go
|- main.go
|-----------------------

a. 入口文件: main.go

package main

import _ "./init"
import "./test"

func main() {
    test.TMessageRegister()
}

b. 编写基础结构体和接口(component)

   (1)  数据库连接相关, db.go

package component

import "github.com/jinzhu/gorm"

type SwyModel struct {
    *gorm.DB    
    TableName string     
}

   (2)  数据实体相关, model.go 

package component

import (
    "encoding/json"

    "github.com/jinzhu/gorm"
)

type DpModel struct {
    gorm.Model
}

func translate(out interface{}, v interface{}) (interface{}, error) {
    var (
        err error
        ms = make([]byte, 0, 64)
    )
    ms, err = json.Marshal(v)
    if err != nil {
        return nil, err
    }
    err = json.Unmarshal(ms, out)
    if err != nil {
        return nil, err
    }
    return out, nil
}

func (s *DpModel) Translate(out int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值