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
# 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.