db

package
v1.4.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 30, 2020 License: MIT Imports: 14 Imported by: 0

README

数据库封装

封装 orm 和数据库驱动

初始化

  • 使用 db.Gorm 使用 gorm 初始化
  • 使用 db.Xorm 使用 xorm 初始化
import (
  "github.com/go-eyas/toolkit/db"
  "github.com/go-eyas/toolkit/log"
)

func main() {
  log.Init(&log.Config{})
  var err error
  // gorm
  var db *gorm.DB
  db, err = db.Gorm(db.Config{
    Driver: "mysql",
    URI: "user:password@(127.0.0.1:3306)/mydb",
    Logger: log.SugaredLogger,
  })

  // xorm
  // var db *xorm.Engine
  // db, err = db.Xorm(db.Config{
  //   Driver: "mysql",
  //   URI: "user:password@(127.0.0.1:3306)/mydb",
  //   Logger: log.SugaredLogger,
  // })
  

  if err != nil {
    panic(err)
  }

  defer db.Close()
}

视图 View

在支持视图的数据库,可使用 db.GormViewMigratedb.XormViewMigrate 用于创建视图,视图的字段名称映射和 model 一致

视图的模型要实现接口

type ViewModel interface{
	From() string // From 返回 创建视图时的 FROM 部分语句
}
type User struct {
  ID int64
  UserName string
  Status byte
}
type Company struct {
  UID int64
  CompanyName string
}

type UserCompany struct {
  *User
  *Company
}

func (UserView) From() string {
  return "FROM users JOIN company ON company.uid = users.uid"
}

db.GormViewMigrate(DB, &UserCompany{})

DB.Model(UserCompany{}).Where("id = ?", 1).Find(&userCompany)

驱动

初始化的时候,配置项为

// Config 数据库配置项
type Config struct {
	Driver string `yaml:"driver" json:"driver" toml:"driver" env:"DB_DRIVER"`
	URI    string `yaml:"uri" json:"uri" toml:"uri" env:"DB_URI"`
	Debug  bool
	Logger Logger
}

Driver 的可选项为

  • mysql
  • postgres
  • mssql: gorm 为 mssql,xorm 为 sqlserver

这些驱动都已提前导入,初始化的时候无需再导入驱动

sqlite

因为sqlite驱动是CGO的包,所以默认不导入, 如果要是用sqlite数据库,请按照以下指引

  1. 导入驱动
import "github.com/go-eyas/toolkit/db/sqlite"
  1. 安装 Gcc, G++ 编译环境,windows可使用 TDM-GCC ,其他系统的自行解决
  2. 使用环境变量启用CGO: CGO_ENABLED=1
其他数据库

如果要是用其他数据库,如 oracle,tidb等等,执行查找资料并引入驱动

godoc

API 文档

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Gorm

func Gorm(conf *Config) (*gorm.DB, error)

Gorm 初始化 gorm,返回 gorm 实例

func GormViewMigrate

func GormViewMigrate(db *gorm.DB, v ...ViewModel)

func Xorm

func Xorm(conf *Config) (*xorm.Engine, error)

Xorm 初始化Xorm

Types

type Config

type Config struct {
	Driver string `yaml:"driver" json:"driver" toml:"driver" env:"DB_DRIVER"`
	URI    string `yaml:"uri" json:"uri" toml:"uri" env:"DB_URI"`
	Debug  bool
	Logger Logger
}

Config 数据库配置项

type Logger

type Logger interface {
	Debug(...interface{})
	Debugf(string, ...interface{})
	Error(...interface{})
	Errorf(string, ...interface{})
}

Logger 日志对象

type ViewModel

type ViewModel interface {
	From() string
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL