Lightweight & Compitable wrapper of database/sql
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
helong zhang 65822bd505 Remove func QuoteStr() in interface Dialect (#51) 2 days ago
.circleci Add context support (#46) 6 months ago
.drone.yml lunny/fix_fmt_lint (#53) 3 days ago
.gitignore add set db to dialect 5 years ago
LICENSE include copyright name + email 3 years ago
README.md lunny/fix_fmt_lint (#53) 3 days ago
benchmark.sh init core after sperated repository 5 years ago
cache.go comment go lint 4 weeks ago
column.go Remove func QuoteStr() in interface Dialect (#51) 2 days ago
converstion.go Add context support (#46) 6 months ago
db.go lunny/fix_fmt_lint (#53) 3 days ago
db_test.go lunny/fix_drone (#52) 3 days ago
dialect.go Remove func QuoteStr() in interface Dialect (#51) 2 days ago
driver.go Add context support (#46) 6 months ago
error.go lunny/fix_fmt_lint (#53) 3 days ago
filter.go Remove func QuoteStr() in interface Dialect (#51) 2 days ago
filter_test.go Remove func QuoteStr() in interface Dialect (#51) 2 days ago
go.mod update drone 4 weeks ago
go.sum update drone 4 weeks ago
ilogger.go lunny/fix_fmt_lint (#53) 3 days ago
index.go lunny/fix_fmt_lint (#53) 3 days ago
mapper.go lunny/fix_fmt_lint (#53) 3 days ago
mapper_test.go Add context support (#46) 6 months ago
pk.go Add context support (#46) 6 months ago
pk_test.go Add context support (#46) 6 months ago
rows.go lunny/fix_fmt_lint (#53) 3 days ago
scan.go Add context support (#46) 6 months ago
stmt.go lunny/fix_fmt_lint (#53) 3 days ago
table.go lunny/fix_fmt_lint (#53) 3 days ago
table_test.go Add context support (#46) 6 months ago
tx.go Add context support (#46) 6 months ago
type.go lunny/fix_fmt_lint (#53) 3 days ago

README.md

Core is a lightweight wrapper of sql.DB.

Build Status Go Report Card

Open

db, _ := core.Open(db, connstr)

SetMapper

db.SetMapper(SameMapper())

Scan usage

Scan

rows, _ := db.Query()
for rows.Next() {
    rows.Scan()
}

ScanMap

rows, _ := db.Query()
for rows.Next() {
    rows.ScanMap()

ScanSlice

You can use []string, [][]byte, []interface{}, []*string, []sql.NullString to ScanSclice. Notice, slice’s length should be equal or less than select columns.

rows, _ := db.Query()
cols, _ := rows.Columns()
for rows.Next() {
    var s = make([]string, len(cols))
    rows.ScanSlice(&s)
}
rows, _ := db.Query()
cols, _ := rows.Columns()
for rows.Next() {
    var s = make([]*string, len(cols))
    rows.ScanSlice(&s)
}

ScanStruct

rows, _ := db.Query()
for rows.Next() {
    rows.ScanStructByName()
    rows.ScanStructByIndex()
}

Query usage

rows, err := db.Query("select * from table where name = ?", name)

user = User{
    Name:"lunny",
}
rows, err := db.QueryStruct("select * from table where name = ?Name",
            &user)

var user = map[string]interface{}{
    "name": "lunny",
}
rows, err = db.QueryMap("select * from table where name = ?name",
            &user)

QueryRow usage

row := db.QueryRow("select * from table where name = ?", name)

user = User{
    Name:"lunny",
}
row := db.QueryRowStruct("select * from table where name = ?Name",
            &user)

var user = map[string]interface{}{
    "name": "lunny",
}
row = db.QueryRowMap("select * from table where name = ?name",
            &user)

Exec usage

db.Exec("insert into user (`name`, title, age, alias, nick_name,created) values (?,?,?,?,?,?)", name, title, age, alias...)

user = User{
    Name:"lunny",
    Title:"test",
    Age: 18,
}
result, err = db.ExecStruct("insert into user (`name`, title, age, alias, nick_name,created) values (?Name,?Title,?Age,?Alias,?NickName,?Created)",
            &user)

var user = map[string]interface{}{
    "Name": "lunny",
    "Title": "test",
    "Age": 18,
}
result, err = db.ExecMap("insert into user (`name`, title, age, alias, nick_name,created) values (?Name,?Title,?Age,?Alias,?NickName,?Created)",
            &user)