mysql

package
v0.1.3 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2023 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Overview

Package mysql 实现了mysql的数据库方言Dialect,支持mysql 5.6+ 对应数据库 驱动为github.com/go-sql-driver/mysql 数据源Source使用BaseSource来简化实现, 对github.com/go-sql-driver/mysql 驱动进行包装.对于数据库配置,需要和Config一致 表Table使用BaseTable来简化实现,也是基于github.com/go-sql-driver/mysql的 封装,Table实现了FieldAdder的方式去获取列,在ExecParameter中实现写入模式为 replace的repalce into批量数据处理模式,写入模式为insert的插入模式复用 已有的database.InsertParam 列Field使用BaseField来简化实现,其中FieldType采用了原来的sql.ColumnType, 并实现了ValuerGoType 扫描器Scanner使用BaseScanner来简化实现 赋值器Valuer 使用了GoValuer的实现方式

Index

Constants

View Source
const WriteModeReplace = "replace"

WriteModeReplace replace into 写入方式

Variables

This section is empty.

Functions

func NewSource

func NewSource(bs *database.BaseSource) (s database.Source, err error)

NewSource 生成mysql数据源,在配置文件错误时会报错

func Quoted

func Quoted(s string) string

Quoted mysql引用函数

Types

type Config

type Config struct {
	URL      string `json:"url"`      //数据库url,包含数据库地址,数据库其他参数
	Username string `json:"username"` //用户名
	Password string `json:"password"` //密码
}

Config mysql配置,读入的时间都需要解析即parseTime=true

func NewConfig

func NewConfig(conf *config.JSON) (c *Config, err error)

NewConfig 创建mysql配置,如果格式不符合要求,就会报错

func (*Config) FetchMysqlConfig

func (c *Config) FetchMysqlConfig() (conf *mysql.Config, err error)

FetchMysqlConfig 获取生成Mysql连接配置,url有错会报错

type Dialect

type Dialect struct{}

Dialect mysql数据库方言

func (Dialect) Name

func (d Dialect) Name() string

Name 数据库方言的注册名

func (Dialect) Source

func (d Dialect) Source(bs *database.BaseSource) (database.Source, error)

Source 生产数据源

type Field

type Field struct {
	*database.BaseField
}

Field 字段

func NewField

func NewField(bf *database.BaseField) *Field

NewField 通过基本列属性生成字段

func (*Field) BindVar

func (f *Field) BindVar(_ int) string

BindVar SQL占位符,用于SQL语句

func (*Field) Quoted

func (f *Field) Quoted() string

Quoted 引用,用于SQL语句

func (*Field) Scanner

func (f *Field) Scanner() database.Scanner

Scanner 扫描器,用于读取数据

func (*Field) Select

func (f *Field) Select() string

Select 查询时字段,用于SQL查询语句

func (*Field) Type

func (f *Field) Type() database.FieldType

Type 字段类型

func (*Field) Valuer

func (f *Field) Valuer(c element.Column) database.Valuer

Valuer 赋值器,采用GoValuer处理数据

type FieldType

type FieldType struct {
	*database.BaseFieldType
	// contains filtered or unexported fields
}

FieldType 字段类型

func NewFieldType

func NewFieldType(typ database.ColumnType) *FieldType

NewFieldType 创建新的字段类型

func (*FieldType) GoType

func (f *FieldType) GoType() database.GoType

GoType 返回处理数值时的Golang类型

func (*FieldType) IsSupportted

func (f *FieldType) IsSupportted() bool

IsSupportted 是否支持解析

type ReplaceParam

type ReplaceParam struct {
	*database.BaseParam
}

ReplaceParam Replace into 参数

func NewReplaceParam

func NewReplaceParam(t database.Table, txOpts *sql.TxOptions) *ReplaceParam

NewReplaceParam 通过表table和事务参数txOpts插入参数

func (*ReplaceParam) Agrs

func (rp *ReplaceParam) Agrs(records []element.Record) (valuers []interface{}, err error)

Agrs 通过多条记录 records生成批量Replace into参数

func (*ReplaceParam) Query

func (rp *ReplaceParam) Query(records []element.Record) (query string, err error)

Query 通过多条记录 records生成批量Replace into插入sql语句

type Scanner

type Scanner struct {
	database.BaseScanner
	// contains filtered or unexported fields
}

Scanner 扫描器

func NewScanner

func NewScanner(f *Field) *Scanner

NewScanner 根据列类型生成扫描器

func (*Scanner) Scan

func (s *Scanner) Scan(src interface{}) (err error)

Scan 根据列类型读取数据 "MEDIUMINT", "INT", "BIGINT", "SMALLINT", "TINYINT", "YEAR"作为整形处理 "DOUBLE", "FLOAT", "DECIMAL"作为高精度实数处理 "DATE", "DATETIME", "TIMESTAMP" 作为时间处理 "TEXT", "LONGTEXT", "MEDIUMTEXT", "TINYTEXT", "CHAR", "VARCHAR", "TIME"作为字符串处理 "BLOB", "LONGBLOB", "MEDIUMBLOB", "BINARY", "TINYBLOB", "VARBINARY"作为字节流处理

type Source

type Source struct {
	*database.BaseSource //基础数据源
	// contains filtered or unexported fields
}

Source mysql数据源

func (*Source) ConnectName

func (s *Source) ConnectName() string

ConnectName github.com/go-sql-driver/mysql的数据源连接信息

func (*Source) Connector

func (s *Source) Connector() (driver.Connector, error)

Connector github.com/go-sql-driver/mysql的数据源连接器

func (*Source) DriverName

func (s *Source) DriverName() string

DriverName github.com/go-sql-driver/mysql的驱动名

func (*Source) Key

func (s *Source) Key() string

Key 数据源的关键字,用于DBWrapper的复用

func (*Source) Table

func (s *Source) Table(b *database.BaseTable) database.Table

Table 生成mysql的表

type Table

type Table struct {
	*database.BaseTable
}

Table mysql表

func NewTable

func NewTable(b *database.BaseTable) *Table

NewTable 创建mysql表,注意此时BaseTable中的schema参数为空,instance为数据库名,而name是表明

func (*Table) AddField

func (t *Table) AddField(baseField *database.BaseField)

AddField 新增列

func (*Table) ExecParam

func (t *Table) ExecParam(mode string, txOpts *sql.TxOptions) (database.Parameter, bool)

ExecParam 获取执行参数,其中replace into的参数方式以及被注册

func (*Table) Quoted

func (t *Table) Quoted() string

Quoted 表引用全名

func (*Table) ShouldOneByOne

func (t *Table) ShouldOneByOne(err error) bool

ShouldOneByOne 单个重试

func (*Table) ShouldRetry

func (t *Table) ShouldRetry(err error) bool

ShouldRetry 重试

func (*Table) String

func (t *Table) String() string

Jump to

Keyboard shortcuts

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