issue9 / orm Goto Github PK
View Code? Open in Web Editor NEW简单小巧的 orm
Home Page: https://issue9.github.io/orm/
License: MIT License
简单小巧的 orm
Home Page: https://issue9.github.io/orm/
License: MIT License
db1,err := orm.NewDB("./db1", "prefix_", dialect.Sqlite3("sqlite3"))
test.go:13:21: not enough arguments in call to orm.NewDB
have (string, string, core.Dialect)
want (string, string, string, orm.Dialect)
Dialect 和 Driver 是一一对应的关系,可以通过 DriverName 获取对应的 Dialect 实例。
不过目前没有好的方式可以获取 DriverName。
参考文档中 [Query/Exec:] 部分的例子代码
package main
import (
"fmt"
"github.com/issue9/orm/v5" // sqlite3 dialect
_ "github.com/issue9/orm/v5/core"
"github.com/issue9/orm/v5/dialect"
"github.com/issue9/orm/v5/fetch"
_ "github.com/issue9/orm/v5/sqlbuilder"
_ "github.com/mattn/go-sqlite3"
_ "time"
//"github.com/gorilla/sessions"
)
type User struct {
Id int64 `orm:"name(id);ai;"`
Name string `orm:"name(name);`
}
func (c *User) TableName() string { return "User" }
func main() {
db2, err := orm.NewDB("./orm.db", dialect.Sqlite3("sqlite3"))
db2.Create(&User{})
fmt.Println(err)
azer := &User{
Name: "issue9",
}
ret, err := db2.Insert(azer)
fmt.Println(ret, err)
data := []*User{}
sql := "select * from user where id >=?"
rows, err := db2.Query(sql, []interface{}{1})
fmt.Println(rows, err)
r, err := fetch.Object(true, rows, &data)
fmt.Println(r, err)
for k, v := range data {
fmt.Println(k, v.Name)
}
}
报错
sql: converting argument $1 type: unsupported type []interface {}, a slice of interface
panic: runtime error: invalid memory address or nil pointer dereference
用
rows, err := db2.Query(sql, 1)
返回有纪录 ,但是没有字段值
采用 JSON 字符串保存数组;或是以特殊符号分隔的字符串保存,符号由 struct tag 中指定。
mysql 并没有完全对应的语句,需要定义 Hooker 实现自定义?
目前需要通过频繁的创建bytes.Buffer来生成SQL语句。
通过sync.Pool管理bytes.Buffer,在性能上是否会有所提升!
比如查询以下语句:
select a.*, user.name as u.name, account.count as u.count from ...
导出到以下结构体
type Info struct {
// 其它字段定义
User *User `orm:"name(u)"`
}
type User struct {
Name string `orm:"name(name)"`
Account int `orm:"name(account)`
}
info := &info{}
sql.QueryObj(info)
查询出为的 info
对象,应该将查询语句的 u.
开头的字段自初始化 Info.User
中的对象。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.