新增中文说明文件
This commit is contained in:
parent
4969e8bf94
commit
202c8a68a4
|
@ -1,7 +1,9 @@
|
|||
orm
|
||||
xorm
|
||||
=====
|
||||
|
||||
orm is an ORM for Go. It lets you map Go structs to tables in a database.
|
||||
[中文](README_CN.md)
|
||||
|
||||
xorm is an ORM for Go. It lets you map Go structs to tables in a database.
|
||||
|
||||
Right now, it interfaces with Mysql/SQLite. The goal however is to add support for PostgreSQL/DB2/MS ADODB/ODBC/Oracle in the future.
|
||||
|
||||
|
|
|
@ -0,0 +1,129 @@
|
|||
xorm
|
||||
=====
|
||||
|
||||
[English](README.md)
|
||||
|
||||
xorm 是一个Go语言的ORM(对象关系模型). It lets you map Go structs to tables in a database.
|
||||
|
||||
Right now, it interfaces with Mysql/SQLite. The goal however is to add support for PostgreSQL/DB2/MS ADODB/ODBC/Oracle in the future.
|
||||
|
||||
All in all, it's not entirely ready for advanced use yet, but it's getting there.
|
||||
|
||||
Drivers for Go's sql package which support database/sql includes:
|
||||
|
||||
Mysql:[github.com/ziutek/mymysql/godrv](https://github.com/ziutek/mymysql/godrv)
|
||||
|
||||
Mysql:[github.com/Go-SQL-Driver/MySQL](https://github.com/Go-SQL-Driver/MySQL)
|
||||
|
||||
SQLite:[github.com/mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)
|
||||
|
||||
### Installing xorm
|
||||
go get github.com/lunny/xorm
|
||||
|
||||
### Quick Start
|
||||
|
||||
1. Create an database engine (for example: mysql)
|
||||
|
||||
```go
|
||||
engine := xorm.Create("mysql://root:123@localhost/test")
|
||||
```
|
||||
|
||||
2. Define your struct
|
||||
|
||||
```go
|
||||
type User struct {
|
||||
Id int
|
||||
Name string
|
||||
Age int `xorm:"-"`
|
||||
}
|
||||
```
|
||||
|
||||
for Simple Task, just use engine's functions:
|
||||
|
||||
begin start, you should create a database and then we create the tables
|
||||
|
||||
```go
|
||||
err := engine.CreateTables(&User{})
|
||||
```
|
||||
|
||||
then, insert an struct to table
|
||||
|
||||
```go
|
||||
id, err := engine.Insert(&User{Name:"lunny"})
|
||||
```
|
||||
|
||||
or you want to update this struct
|
||||
|
||||
```go
|
||||
user := User{Id:1, Name:"xlw"}
|
||||
rows, err := engine.Update(&user)
|
||||
```
|
||||
|
||||
3. Fetch a single object by user
|
||||
```go
|
||||
var user = User{Id:27}
|
||||
engine.Get(&user)
|
||||
|
||||
var user = User{Name:"xlw"}
|
||||
engine.Get(&user)
|
||||
```
|
||||
|
||||
for deep use, you should create a session, this func will create a connection to db
|
||||
|
||||
```go
|
||||
session, err := engine.MakeSession()
|
||||
defer session.Close()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
```
|
||||
|
||||
1. Fetch a single object by where
|
||||
```go
|
||||
var user Userinfo
|
||||
session.Where("id=?", 27).Get(&user)
|
||||
|
||||
var user2 Userinfo
|
||||
session.Where(3).Get(&user2) // this is shorthand for the version above
|
||||
|
||||
var user3 Userinfo
|
||||
session.Where("name = ?", "john").Get(&user3) // more complex query
|
||||
|
||||
var user4 Userinfo
|
||||
session.Where("name = ? and age < ?", "john", 88).Get(&user4) // even more complex
|
||||
```
|
||||
|
||||
2. Fetch multiple objects
|
||||
|
||||
```go
|
||||
var allusers []Userinfo
|
||||
err := session.Where("id > ?", "3").Limit(10,20).Find(&allusers) //Get id>3 limit 10 offset 20
|
||||
|
||||
var tenusers []Userinfo
|
||||
err := session.Where("id > ?", "3").Limit(10).Find(&tenusers) //Get id>3 limit 10 if omit offset the default is 0
|
||||
|
||||
var everyone []Userinfo
|
||||
err := session.Find(&everyone)
|
||||
```
|
||||
|
||||
###***About Map Rules***
|
||||
1. Struct and struct's fields name should be Pascal style, and the table and column's name default is us
|
||||
for example:
|
||||
The structs Name 'UserInfo' will turn into the table name 'user_info', the same as the keyname.
|
||||
If the keyname is 'UserName' will turn into the select colum 'user_name'
|
||||
|
||||
2. You have two method to change the rule. One is implement your own Map interface according IMapper, you can find the interface in mapper.go and set it to engine.Mapper
|
||||
|
||||
another is use field tag, field tag support the below keywords:
|
||||
[name] column name
|
||||
pk the field is a primary key
|
||||
int(11)/varchar(50) column type
|
||||
autoincr auto incrment
|
||||
[not ]null if column can be null value
|
||||
unique unique
|
||||
- this field is not map as a table column
|
||||
|
||||
## LICENSE
|
||||
|
||||
BSD License
|
||||
[http://creativecommons.org/licenses/BSD/](http://creativecommons.org/licenses/BSD/)
|
Loading…
Reference in New Issue