fix
parent
751a223209
commit
a05e1a98f7
|
@ -17,7 +17,12 @@ func (s *SqlBuilder[T]) buildPaginateSql(sqls string) string {
|
|||
s.Opts.Page.Init()
|
||||
pageIndex := s.Opts.Page.GetPageIndex()
|
||||
pageSize := s.Opts.Page.GetPageSize()
|
||||
if s.Driver == util.DriverMysql {
|
||||
return fmt.Sprintf("%s limit %d offset %d", sqls, pageSize, (pageIndex-1)*pageSize)
|
||||
} else if s.Driver == util.DriverOracle {
|
||||
return fmt.Sprintf("select t.* from (%s) t where t.rownum > %d and t.rownum <= %d", sqls, (pageIndex-1)*pageSize, pageIndex*pageSize)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (s *SqlBuilder[T]) buildCountSql(sqls string) string {
|
||||
|
|
10
db/db.go
10
db/db.go
|
@ -3,16 +3,18 @@ package db
|
|||
import (
|
||||
"git.botann.com/lijun/sql-builder/util"
|
||||
"git.botann.com/tinycs/boomerang/tydb"
|
||||
"git.botann.com/tinycs/boomerang/tyoracle"
|
||||
"git.botann.com/tinycs/boomerang/tytaos"
|
||||
)
|
||||
|
||||
type SqlConnector[T tydb.QOneRowRst | tytaos.QOneRowRst | int] interface {
|
||||
type SqlConnector[T tydb.QOneRowRst | tytaos.QOneRowRst | tyoracle.QOneRowRst | int] interface {
|
||||
QueryEx(sql string, data interface{}, args ...interface{}) error
|
||||
QueryRow(sql string, data interface{}, args ...interface{}) (error, T)
|
||||
}
|
||||
|
||||
type SqlBuilder[T tydb.QOneRowRst | tytaos.QOneRowRst | int] struct {
|
||||
type SqlBuilder[T tydb.QOneRowRst | tytaos.QOneRowRst | tyoracle.QOneRowRst | int] struct {
|
||||
Connector SqlConnector[T]
|
||||
Driver string
|
||||
Sql string
|
||||
Opts Options
|
||||
}
|
||||
|
@ -32,6 +34,10 @@ func (s *SqlBuilder[T]) Clear() {
|
|||
s.Opts = Options{}
|
||||
}
|
||||
|
||||
func (s *SqlBuilder[T]) SetDriver(driver string) {
|
||||
s.Driver = driver
|
||||
}
|
||||
|
||||
func (s *SqlBuilder[T]) FindBySql(data interface{}) error {
|
||||
sqls := s.buildSql()
|
||||
return s.Connector.QueryEx(sqls, data, s.Opts.args...)
|
||||
|
|
2
go.mod
2
go.mod
|
@ -2,7 +2,7 @@ module git.botann.com/lijun/sql-builder
|
|||
|
||||
go 1.21.5
|
||||
|
||||
require git.botann.com/tinycs/boomerang v1.4.6
|
||||
require git.botann.com/tinycs/boomerang v1.4.7
|
||||
|
||||
require (
|
||||
github.com/go-sql-driver/mysql v1.5.0 // indirect
|
||||
|
|
|
@ -2,14 +2,24 @@ package sql_builder
|
|||
|
||||
import (
|
||||
"git.botann.com/lijun/sql-builder/db"
|
||||
"git.botann.com/lijun/sql-builder/util"
|
||||
"git.botann.com/tinycs/boomerang/tydb"
|
||||
"git.botann.com/tinycs/boomerang/tyoracle"
|
||||
"git.botann.com/tinycs/boomerang/tytaos"
|
||||
)
|
||||
|
||||
func NewSqlBuilder[T tydb.QOneRowRst | tytaos.QOneRowRst | int](connector db.SqlConnector[T]) *db.SqlBuilder[T] {
|
||||
return &db.SqlBuilder[T]{Connector: connector}
|
||||
return &db.SqlBuilder[T]{Connector: connector, Driver: util.DriverMysql}
|
||||
}
|
||||
|
||||
func DefaultSqlBuilder() *db.SqlBuilder[tydb.QOneRowRst] {
|
||||
return NewSqlBuilder[tydb.QOneRowRst](tydb.DB())
|
||||
}
|
||||
|
||||
func NewSqlBuilderByDriver[T tydb.QOneRowRst | tytaos.QOneRowRst | tyoracle.QOneRowRst | int](connector db.SqlConnector[T], driver string) *db.SqlBuilder[T] {
|
||||
return &db.SqlBuilder[T]{Connector: connector, Driver: driver}
|
||||
}
|
||||
|
||||
func OracleSqlBuilder() *db.SqlBuilder[tyoracle.QOneRowRst] {
|
||||
return NewSqlBuilderByDriver[tyoracle.QOneRowRst](tyoracle.DB(), util.DriverOracle)
|
||||
}
|
||||
|
|
|
@ -7,3 +7,8 @@ const (
|
|||
OrderPlaceholder = "@o"
|
||||
PartitionPlaceholder = "@p"
|
||||
)
|
||||
|
||||
const (
|
||||
DriverMysql = "mysql"
|
||||
DriverOracle = "oracle"
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue