Documentation ¶
Index ¶
- type DefaultLogger
- type Logger
- type Options
- type Osm
- func (o *Osm) Begin() (*Tx, error)
- func (o *Osm) Close() error
- func (o *Osm) Delete(sql string, params ...interface{}) (int64, error)
- func (o *Osm) Insert(sql string, params ...interface{}) (int64, int64, error)
- func (o *Osm) SelectKVS(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Osm) SelectStrings(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Osm) SelectStruct(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Osm) SelectStructs(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Osm) SelectValue(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Osm) SelectValues(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Osm) Update(sql string, params ...interface{}) (int64, error)
- func (o *Osm) UpdateMulti(sql string, params ...interface{}) error
- type Tx
- func (o *Tx) Commit() error
- func (o *Tx) Delete(sql string, params ...interface{}) (int64, error)
- func (o *Tx) Insert(sql string, params ...interface{}) (int64, int64, error)
- func (o *Tx) Rollback() error
- func (o *Tx) SelectKVS(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Tx) SelectStrings(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Tx) SelectStruct(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Tx) SelectStructs(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Tx) SelectValue(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Tx) SelectValues(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
- func (o *Tx) Update(sql string, params ...interface{}) (int64, error)
- func (o *Tx) UpdateMulti(sql string, params ...interface{}) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DefaultLogger ¶ added in v2.0.4
type DefaultLogger struct { }
type Options ¶ added in v2.0.3
type Options struct { MaxIdleConns int MaxOpenConns int ConnMaxLifetime time.Duration ConnMaxIdleTime time.Duration // Warn日志 WarnLogger Logger // Error日志 ErrorLogger Logger // Info日志 InfoLogger Logger // ShowSQL 显示执行的sql,用于调试,使用logger打印 ShowSQL bool // SlowLogDuration 慢查询时间阈值 SlowLogDuration time.Duration }
Options 连接选项和日志设置
type Osm ¶
type Osm struct {
// contains filtered or unexported fields
}
Osm 对象,通过Struct、Map、Array、value等对象以及Sql Map来操作数据库。可以开启事务。
func New ¶
New 创建一个新的Osm,这个过程会打开数据库连接。
driverName 是数据库驱动名称如"mysql". dataSource 是数据库连接信息如"root:root@/text?charset=utf8". options 是数据连接选项和日志设置
如:
o, err := osm.New("mysql", "root:root@/text?charset=utf8", osm.Options{ MaxIdleConns: 50, MaxOpenConns: 100, ConnMaxLifetime: 5 * time.Minute, ConnMaxIdleTime: 5 * time.Minute, WarnLogger: &WarnLoggor{errorLogger}, // Logger ErrorLogger: &ErrorLogger{errorLogger}, // Logger InfoLogger: &InfoLogger{infoLogger}, // Logger ShowSQL: true, // bool SlowLogDuration: 500 * time.Millisecond, // time.Duration })
func (*Osm) Delete ¶
Delete 执行删除sql
代码
count, err := o.Delete(`DELETE FROM res_user WHERE id in #{Ids};`, []int64{1, 2}) if err != nil { log.Println(err) } log.Println("count:", count)
结果
count: 2
删除id为1和2的用户数据
func (*Osm) Insert ¶
Insert 执行添加sql
代码
insertResUser := ResUser{ Email: "test@foxmail.com", } insertID, count, err := o.Insert("INSERT INTO res_user (email) VALUES(#{Email});", insertResUser) if err != nil { log.Println(err) } log.Println("insertID:", insertID, "count:", count)
结果
insertID: 3 count: 1
添加一个用户数据,email为"test@foxmail.com"
func (*Osm) SelectKVS ¶
func (o *Osm) SelectKVS(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectKVS 执行查询sql
查出的结果为多行,每行有两个字段,前者为key,后者为value,存入map (双列),Key、Value可以是指针,如var r map[string]time.Time、var r map[*string]time.Time、var r map[string]*time.Time
代码
var idEmailMap = map[int64]string{} _, err = o.SelectKVS(`SELECT id,email FROM res_user WHERE id in #{Ids};`, []int64{1, 2})(&idEmailMap) if err != nil { log.Println(err) } log.Printf("idEmailMap: %v \n", idEmailMap)
结果
idEmailMap: map[1:test@foxmail.com 2:test@foxmail.com]
func (*Osm) SelectStrings ¶
func (o *Osm) SelectStrings(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectStrings 执行查询sql
查出的结果为多行,查出的结果为多行,并存入columns,和datas。columns为[]string,datas为[][]string
代码
var columns []string var datas [][]string _, err = o.SelectStrings(`SELECT id,email FROM res_user WHERE id in #{Ids};`, []int64{1, 2})(&columns, &datas) if err != nil { log.Println(err) } log.Printf("columns: %v,datas: %v \n", columns, datas)
结果
columns: ["id", "email"] datas: [["1",'test@foxmail.com'],["2","test@foxmail.com"]]
func (*Osm) SelectStruct ¶
func (o *Osm) SelectStruct(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectStruct 执行查询sql
查出的结果为单行,并存入struct,可以是指针,如var r User、var r *User
代码
var users []ResUser _, err = o.SelectStruct(`SELECT id,email,create_time FROM res_user WHERE id=#{Id};`, 1)(&users) if err != nil { log.Println(err) } log.Printf("user: %#v \n", users)
结果
user: ResUser{ID:1, Email:"test@foxmail.com", Mobile:"", Nickname:""}
func (*Osm) SelectStructs ¶
func (o *Osm) SelectStructs(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectStructs 执行查询sql
查出的结果为多行,并存入struct array,元素可以是指针,如var r []User、var r []*User
代码
var users []ResUser _, err = o.SelectStructs(`SELECT id,email,create_time FROM res_user WHERE id=#{Id};`, 1)(&users) if err != nil { log.Println(err) } log.Printf("users: %#v \n", users)
结果
users: []ResUser{ResUser{ID:1, Email:"test@foxmail.com", Mobile:"", Nickname:""}}
func (*Osm) SelectValue ¶
func (o *Osm) SelectValue(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectValue 执行查询sql
查出的结果为单行,并存入不定长的变量上(...),可以是指针,如var r1,r2 string、var r1,r2 *string
代码
var email string _, err = o.SelectValue(`SELECT email FROM res_user WHERE id=#{Id};`, 1)(&email) if err != nil { log.Println(err) } log.Printf("email: %s \n", email)
结果
email: test@foxmail.com
func (*Osm) SelectValues ¶
func (o *Osm) SelectValues(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectValues 执行查询sql
查出的结果为多行,并存入不定长的变量上(...,每个都为array),元素可以是指针,如var r1,r2 []string、var r1,r2 []*string都允许
代码
var emails []string _, err = o.SelectValues(`SELECT email FROM res_user WHERE id in #{Ids};`, []int64{1, 2})(&emails) if err != nil { log.Println(err) } log.Printf("emails: %v \n", emails)
结果
emails: [test@foxmail.com test@foxmail.com]
func (*Osm) Update ¶
Update 执行更新sql
代码
count, err := o.Update(`UPDATE res_user SET email=#{Email} WHERE id=#{ID};`, "test2@foxmail.com", 3) if err != nil { log.Println(err) } log.Println("count:", count)
结果
count: 1
将id为1的用户email更新为"test2@foxmail.com"
func (*Osm) UpdateMulti ¶
UpdateMulti 批量执行更新sql
代码
user := User{Id: 3, Id2: 4, Email: "test@foxmail.com"} err := o.UpdateMulti(` UPDATE user SET email='#{Email}' where id = #{Id}; UPDATE user SET email='#{Email}' where id = #{Id2};`, user)
将id为3和4的用户email更新为"test@foxmail.com"
type Tx ¶
type Tx struct {
// contains filtered or unexported fields
}
Tx 与Osm对象一样,不过是在事务中进行操作
func (*Tx) Delete ¶
Delete 执行删除sql
代码
count, err := o.Delete(`DELETE FROM res_user WHERE id in #{Ids};`, []int64{1, 2}) if err != nil { log.Println(err) } log.Println("count:", count)
结果
count: 2
删除id为1和2的用户数据
func (*Tx) Insert ¶
Insert 执行添加sql
代码
insertResUser := ResUser{ Email: "test@foxmail.com", } insertID, count, err := o.Insert("INSERT INTO res_user (email) VALUES(#{Email});", insertResUser) if err != nil { log.Println(err) } log.Println("insertID:", insertID, "count:", count)
结果
insertID: 3 count: 1
添加一个用户数据,email为"test@foxmail.com"
func (*Tx) SelectKVS ¶
func (o *Tx) SelectKVS(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectKVS 执行查询sql
查出的结果为多行,每行有两个字段,前者为key,后者为value,存入map (双列),Key、Value可以是指针,如var r map[string]time.Time、var r map[*string]time.Time、var r map[string]*time.Time
代码
var idEmailMap = map[int64]string{} _, err = o.SelectKVS(`SELECT id,email FROM res_user WHERE id in #{Ids};`, []int64{1, 2})(&idEmailMap) if err != nil { log.Println(err) } log.Printf("idEmailMap: %v \n", idEmailMap)
结果
idEmailMap: map[1:test@foxmail.com 2:test@foxmail.com]
func (*Tx) SelectStrings ¶
func (o *Tx) SelectStrings(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectStrings 执行查询sql
查出的结果为多行,查出的结果为多行,并存入columns,和datas。columns为[]string,datas为[][]string
代码
var columns []string var datas [][]string _, err = o.SelectStrings(`SELECT id,email FROM res_user WHERE id in #{Ids};`, []int64{1, 2})(&columns, &datas) if err != nil { log.Println(err) } log.Printf("columns: %v,datas: %v \n", columns, datas)
结果
columns: ["id", "email"] datas: [["1",'test@foxmail.com'],["2","test@foxmail.com"]]
func (*Tx) SelectStruct ¶
func (o *Tx) SelectStruct(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectStruct 执行查询sql
查出的结果为单行,并存入struct,可以是指针,如var r User、var r *User
代码
var users []ResUser _, err = o.SelectStruct(`SELECT id,email,create_time FROM res_user WHERE id=#{Id};`, 1)(&users) if err != nil { log.Println(err) } log.Printf("user: %#v \n", users)
结果
user: ResUser{ID:1, Email:"test@foxmail.com", Mobile:"", Nickname:""}
func (*Tx) SelectStructs ¶
func (o *Tx) SelectStructs(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectStructs 执行查询sql
查出的结果为多行,并存入struct array,元素可以是指针,如var r []User、var r []*User
代码
var users []ResUser _, err = o.SelectStructs(`SELECT id,email,create_time FROM res_user WHERE id=#{Id};`, 1)(&users) if err != nil { log.Println(err) } log.Printf("users: %#v \n", users)
结果
users: []ResUser{ResUser{ID:1, Email:"test@foxmail.com", Mobile:"", Nickname:""}}
func (*Tx) SelectValue ¶
func (o *Tx) SelectValue(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectValue 执行查询sql
查出的结果为单行,并存入不定长的变量上(...),可以是指针,如var r1,r2 string、var r1,r2 *string
代码
var email string _, err = o.SelectValue(`SELECT email FROM res_user WHERE id=#{Id};`, 1)(&email) if err != nil { log.Println(err) } log.Printf("email: %s \n", email)
结果
email: test@foxmail.com
func (*Tx) SelectValues ¶
func (o *Tx) SelectValues(sql string, params ...interface{}) func(containers ...interface{}) (int64, error)
SelectValues 执行查询sql
查出的结果为多行,并存入不定长的变量上(...,每个都为array),元素可以是指针,如var r1,r2 []string、var r1,r2 []*string都允许
代码
var emails []string _, err = o.SelectValues(`SELECT email FROM res_user WHERE id in #{Ids};`, []int64{1, 2})(&emails) if err != nil { log.Println(err) } log.Printf("emails: %v \n", emails)
结果
emails: [test@foxmail.com test@foxmail.com]
func (*Tx) Update ¶
Update 执行更新sql
代码
count, err := o.Update(`UPDATE res_user SET email=#{Email} WHERE id=#{ID};`, "test2@foxmail.com", 3) if err != nil { log.Println(err) } log.Println("count:", count)
结果
count: 1
将id为1的用户email更新为"test2@foxmail.com"
func (*Tx) UpdateMulti ¶
UpdateMulti 批量执行更新sql
代码
user := User{Id: 3, Id2: 4, Email: "test@foxmail.com"} err := o.UpdateMulti(` UPDATE user SET email='#{Email}' where id = #{Id}; UPDATE user SET email='#{Email}' where id = #{Id2};`, user)
将id为3和4的用户email更新为"test@foxmail.com"