package
0.0.0-20211122123843-a3546acd0d8d
Repository: https://github.com/herb-go/datasource.git
Documentation: pkg.go.dev

# README

querybuilder SQL 语句拼接器

提供拼接 sql 语句的接口,支持设置 sql 类型生成不同的语句

使用方法

使用 QueryBuilder 需要创建 builder 或者使用实现 Table 接口的对象 注意,第一次使用 builder 创建语句后,就无法再修改驱动类型。

直接创建

//创建builder
builder:=querybuilder.New()
builder.Driver="mysql"

使用 Table 对象

Table 对象是使用实现了 DBTable 接口的对象操作实现的操作类。 github.com/herb-go/datasource/sql/db 的 Table 对象是一个标准的可用于创建 Table 的对象

//使用 Table 对象
table:=NewTable(dbtable)
builder:=table.QueryBuilder()

执行语句

builder创建的语句可以通过Exec ,QueryRow ,QueryRows 三个方法及其衍生方式执行。

执行时需要传入一个实现了DB接口的对象

github.com/herb-go/datasource/sql/db 的DB,Table,TxDB都是有效的DB对象
Table对象也通过继承实现了DB对象的接口

//通过builder来执行
sqlResult,err:=builder.Exec(db,query)
sqlRow:=builder.QueryRow(db,query)
sqlRows,err:=builder.QueryRows(db,query)

//通过查询语句来执行
sqlResult,err:=query.Exec(db)
sqlRow:=query.QueryRow(db)
sqlRows,err:=query.QueryRows(db)

支持的语句

Field 数据字段

Field 与 Fields 对象是为了方便进行数据库数据与程序数据结构进行映射儿创建的对象

SELECT 语句

用户查询语句。使用方式:

selectquery:=builder.NewSelect()
selectquery.Select.AddFields(fields)
selectquery.OrderBy.Add("id", false)
selectquery.Limit.SetLimit(1)
selectquery.Limit.SetOffset(1)
selectquery.Join.LeftJoin().On(builder.New("field1=field2")).Alias("t2", "table2")
row := selectquery.QueryRow(table1)
err := selectquery.Result().BindFields(fields).ScanFrom(row)

SELECT 子语句

FROM 子语句

JOIN 子语句

WHERE 子语句

GROUPBY 子语句

ORDERBY 子语句

OTHER 额外部分子语句

INSERT 语句

UPDATE 语句

DELETE 语句

MISC 杂项

支持的数据库及类型

mysql

驱动:github.com/go-sql-driver/mysql

sqlite

驱动:github.com/mattn/go-sqlite3

posgresql

驱动:github.com/lib/pq

mssql

驱动:github.com/denisenkom/go-mssqldb

# Packages

No description provided by the author
No description provided by the author

# Functions

New create new query builder.
NewField Create new field.
NewFields create new fields.
NewSelectResult create select result with given fields.
RegisterDriver register querybuilder driver with given name.

# Variables

Debug querybuild debug mode.If enabled,all sql commands and args will bt sent to logger.
DefaultDriver default driver.
DefaultLogger default logger which print qurey command.args and spent time to std.output.
Logger query logger.

# Structs

Builder query builder struct.
DeleteClause delete clause struct.
DeleteQuery delete query.
EmptyBuilderDriver empty query builder.
Field query field struct.
FromClause from caluse struuct.
GroupByClause group by clause struct.
HavingClause having clause struct.
InsertClause insert clause.
InsertQuery create new insert query.
JoinClause query struct.
JoinData join clause struct.
LimitClause limit clause struct.
Order order data struct.
OrderByClause order by clause struct.
PlainQuery plain query struct.
QueryData query data struct.
SelectClause select clause struct.
SelectQuery select query struct.
SelectResult select result struct.
UpdateClause update clause struct.
UpdateQuery update query struct.
WhereClause where clause struct.

# Interfaces

BuilderDriver query builder driver interface.
DB sql database interface.
Query sql query interface.
ResultScanner select result scanner interface.

# Type aliases

Fields field list.