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