sqlbuilder

package
v1.0.2 Latest Latest
Warning

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

Go to latest
Published: Apr 15, 2024 License: MIT Imports: 8 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTableNameRequire = errors.New("[sqlbuilder] tableName requires")
	ErrColumnsRequire   = errors.New("[sqlbuilder] columns requires")
	ErrDeleteMissWhere  = errors.New("[sqlbuilder] delete sql miss where")
)
View Source
var (
	OpLT      = Op{Symbol: "<", Text: " < "}
	OpLTEQ    = Op{Symbol: "<=", Text: " <= "}
	OpGT      = Op{Symbol: ">", Text: " > "}
	OpGTEQ    = Op{Symbol: ">=", Text: " >= "}
	OpEQ      = Op{Symbol: "=", Text: " = "}
	OpNEQ     = Op{Symbol: "!=", Text: " != "}
	OpAnd     = Op{Symbol: "AND", Text: " AND "}
	OpOr      = Op{Symbol: "OR", Text: " OR "}
	OpIn      = Op{Symbol: "IN", Text: " IN "}
	OpNotIN   = Op{Symbol: "NOT IN", Text: " NOT IN "}
	OpLike    = Op{Symbol: "LIKE", Text: " LIKE "}
	OpNotLike = Op{Symbol: "NOT LIKE", Text: " NOT LIKE "}
)

Functions

func GetColumnsByModel

func GetColumnsByModel(mapper *reflectx.Mapper, model any, omitColumns ...string) []string

GetColumnsByModel 解析 model 所有字段名

func GetColumnsByType

func GetColumnsByType(mapper *reflectx.Mapper, typ reflect.Type, omitColumns ...string) []string

GetColumnsByType 通过字段 tag 解析数据库字段

func GetMapperByTagName

func GetMapperByTagName(tagName string) *reflectx.Mapper

GetMapperByTagName 根据 tag name 返回对应 mapper

Types

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func New

func New(tableName string) *Builder

func (*Builder) Delete

func (b *Builder) Delete() *Deleter

func (*Builder) Insert

func (b *Builder) Insert(columns ...string) *Inserter

func (*Builder) Select

func (b *Builder) Select(columns ...string) *Selector

func (*Builder) Update

func (b *Builder) Update(columns ...string) *Updater

type Column

type Column struct {
	// contains filtered or unexported fields
}

func Col

func Col(c string) Column

Col 表字段

func (Column) EQ

func (c Column) EQ(val any) Column

EQ =

func (Column) Express

func (c Column) Express() string

func (Column) GT

func (c Column) GT(val any) Column

GT >

func (Column) GTEQ

func (c Column) GTEQ(val any) Column

GTEQ >=

func (Column) HasInSQL

func (c Column) HasInSQL() bool

func (Column) In

func (c Column) In(vals ...any) Column

In -> in ()

func (Column) LT

func (c Column) LT(val any) Column

LT <

func (Column) LTEQ

func (c Column) LTEQ(val any) Column

LTEQ <=

func (Column) Like

func (c Column) Like(val any) Column

Like -> LIKE %XXX

func (Column) NotEQ

func (c Column) NotEQ(val any) Column

NotEQ !=

func (Column) NotIn

func (c Column) NotIn(vals ...any) Column

NotIn -> not in ()

func (Column) NotLike

func (c Column) NotLike(val any) Column

NotLike -> NOT LIKE %XXX 、_x_ 、xx[xx-xx] 、xx[^xx-xx]

func (Column) Use

func (c Column) Use(use bool) Column

type Condition

type Condition struct {
	// contains filtered or unexported fields
}

Condition 条件构造器实现

func C

func C(cols ...Column) *Condition

C 创建 Condition 条件构造器

func (*Condition) And

func (e *Condition) And(cols ...Column) *Condition

And 增加 and 条件

func (*Condition) Or

func (e *Condition) Or(c Column) *Condition

Or 增加 and 条件

type ConditionBuilder

type ConditionBuilder interface {
	// contains filtered or unexported methods
}

ConditionBuilder 条件构造器

type Deleter

type Deleter struct {
	// contains filtered or unexported fields
}

func NewDeleter

func NewDeleter(tableName string) *Deleter

NewDeleter tableName 数据库表名

func (*Deleter) Limit

func (d *Deleter) Limit(limit int) *Deleter

Limit 限制删除数量

func (*Deleter) SQL

func (d *Deleter) SQL() (string, error)

SQL 输出sql语句

func (*Deleter) SQLArgs

func (d *Deleter) SQLArgs() (string, []any, error)

SQLArgs 构造 sql 并返回对应参数

func (*Deleter) Where

func (d *Deleter) Where(where ConditionBuilder) *Deleter

Where 条件 condition 可以通过 sqlbuilder.C() 方法创建

type Inserter

type Inserter struct {
	// contains filtered or unexported fields
}

func NewInserter

func NewInserter(tableName string) *Inserter

func (*Inserter) Columns

func (ins *Inserter) Columns(columns ...string) *Inserter

func (*Inserter) IsIgnoreInto

func (ins *Inserter) IsIgnoreInto(ignoreInto bool) *Inserter

func (*Inserter) IsReplaceInto

func (ins *Inserter) IsReplaceInto(replaceInto bool) *Inserter

func (*Inserter) NameSQL

func (ins *Inserter) NameSQL() (string, error)

func (*Inserter) OnDuplicateKeyUpdateString

func (ins *Inserter) OnDuplicateKeyUpdateString(updateString string) *Inserter

func (*Inserter) SQL

func (ins *Inserter) SQL() (string, error)

func (*Inserter) StructColumns

func (ins *Inserter) StructColumns(m any, tagName string, omitColumns ...string) *Inserter

type Op

type Op struct {
	Symbol string
	Text   string
}

type OrderBy

type OrderBy struct {
	// contains filtered or unexported fields
}

func Asc

func Asc(columns ...string) OrderBy

func Desc

func Desc(columns ...string) OrderBy

type OrderType

type OrderType string
const (
	ASC  OrderType = "ASC"
	DESC OrderType = "DESC"
)

type Predicate

type Predicate struct {
	Op       Op
	Express  string
	Args     []any
	HasInSQL bool
}

Predicate where 断言

type Selector

type Selector struct {
	IsForUpdate bool
	// contains filtered or unexported fields
}

func NewSelector

func NewSelector(tableName string) *Selector

func (*Selector) Columns

func (s *Selector) Columns(columns ...string) *Selector

Columns select 的数据库字段

func (*Selector) CountSQL

func (s *Selector) CountSQL() (string, error)

CountSQL 构造 count 查询 sql

func (*Selector) CountSQLArgs

func (s *Selector) CountSQLArgs() (string, []any, error)

CountSQLArgs 构造 count 查询 sql 并返回对应参数

func (*Selector) Distinct

func (s *Selector) Distinct() *Selector

Distinct select distinct

func (*Selector) ForUpdate

func (s *Selector) ForUpdate(isForUpdate bool) *Selector

ForUpdate select for update

func (*Selector) GroupBy

func (s *Selector) GroupBy(columns ...string) *Selector

GroupBy group by

func (*Selector) Limit

func (s *Selector) Limit(limit int64) *Selector

Limit 分页 limit

func (*Selector) Offset

func (s *Selector) Offset(offset int64) *Selector

Offset 分页 offset

func (*Selector) OrderBy

func (s *Selector) OrderBy(orderBy ...OrderBy) *Selector

OrderBy order by orderBy sqlbuilder.Desc("col")

func (*Selector) QueryString

func (s *Selector) QueryString(queryString string) *Selector

QueryString 自定义select字段,sql原样输出

func (*Selector) SQL

func (s *Selector) SQL() (string, error)

SQL 输出sql语句

func (*Selector) SQLArgs

func (s *Selector) SQLArgs() (string, []any, error)

SQLArgs 构造 sql 并返回对应参数

func (*Selector) StructColumns

func (s *Selector) StructColumns(model any, tagName string, omitColumns ...string) *Selector

StructColumns 通过任意model解析出表字段 tagName 解析数据库字段的 tag-name omitColumns 排除哪些字段

func (*Selector) Where

func (s *Selector) Where(where ConditionBuilder) *Selector

Where 条件 condition 可以通过 sqlbuilder.C() 方法创建

type SimpleCondition

type SimpleCondition struct {
	// contains filtered or unexported fields
}

SimpleCondition 简单 where 条件构造

func SC

func SC() *SimpleCondition

SC 简单 where 条件

func (*SimpleCondition) And

func (c *SimpleCondition) And(express string, args ...any) *SimpleCondition

And and 语句 express where 表达式

func (*SimpleCondition) Or

func (c *SimpleCondition) Or(express string, args ...any) *SimpleCondition

Or or 语句 express where 表达式

func (*SimpleCondition) Predicates

func (c *SimpleCondition) Predicates() []Predicate

type Updater

type Updater struct {
	// contains filtered or unexported fields
}

func NewUpdater

func NewUpdater(tableName string) *Updater

func (*Updater) Columns

func (u *Updater) Columns(columns ...string) *Updater

Columns update 的数据库字段

func (*Updater) NameSQL

func (u *Updater) NameSQL() (string, error)

func (*Updater) SQL

func (u *Updater) SQL() (string, error)

SQL 输出sql语句

func (*Updater) SQLArgs

func (u *Updater) SQLArgs() (string, []any, error)

SQLArgs 构造 sql 并返回对应参数

func (*Updater) Set

func (u *Updater) Set(column string, val any) *Updater

Set 设置字段值

func (*Updater) Where

func (u *Updater) Where(where ConditionBuilder) *Updater

Where 条件 condition 可以通过 sqlbuilder.C() 方法创建

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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