中文文档:http://www.xorm.io/docs/
github地址:https://github.com/go-xorm/xorm
安装:go get github.com/go-xorm/xorm
基本使用
1.创建连接
//创建orm引擎
//"root:password@/xorm?charset=utf8":root为用户名,password为密码,xorm为数据库
//整体格式:"数据库名称:数据库连接密码@(数据库地址:3306)/数据库实例名称?charset=utf8"
//mysql要导入:import _ "github.com/go-sql-driver/mysql"
engine, err := xorm.NewEngine("mysql", "root:password@/xorm?charset=utf8")
if err!=nil{
fmt.Println(err)
return
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
2.创建映射(可以手动编写也可以使用工具生成)
数据库对应的表:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) NOT NULL COMMENT '用户名称',
`birthday` date DEFAULT NULL COMMENT '生日',
`sex` char(1) DEFAULT NULL COMMENT '性别',
`address` varchar(256) DEFAULT NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
对应的结构体:
type User struct {
Id int `xorm:"not null pk autoincr INT(11)"`
Username string `xorm:"not null VARCHAR(32)"`
Birthday time.Time `xorm:"DATE"`
Sex string `xorm:"CHAR(1)"`
Address string `xorm:"VARCHAR(256)"`
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
工具自动生成方法:使用xorm工具
安装工具:go get github.com/go-xorm/cmd/xorm
命令行输入:xorm reverse mysql root:密码@/xorm?charset=utf8 /home/tym/golib/src/github.com/go-xorm/cmd/xorm/templates/goxorm/
/home/tym/golib/src/github.com/go-xorm/cmd/xorm/templates/goxorm/这一串是模版的位置(GOPATH/src里)
不写生成路径会在你的目录下建一个model,对应文件生成在model中
3.增删改查演示
package main
import (
"github.com/go-xorm/xorm"
"time"
"fmt"
"github.com/go-xorm/core"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
Id int `xorm:"not null pk autoincr INT(11)"`
Username string `xorm:"not null VARCHAR(32)"`
Birthday time.Time `xorm:"DATE"`
Sex string `xorm:"CHAR(1)"`
Address string `xorm:"VARCHAR(256)"`
}
func main() {
//创建orm引擎
engine, err := xorm.NewEngine("mysql", "root:123456@/xorm?charset=utf8")
if err!=nil{
fmt.Println(err)
return
}
//连接测试
if err := engine.Ping(); err!=nil{
fmt.Println(err)
return
}
//日志打印SQL
engine.ShowSQL(true)
//设置连接池的空闲数大小
engine.SetMaxIdleConns(5)
//设置最大打开连接数
engine.SetMaxOpenConns(5)
//名称映射规则主要负责结构体名称到表名和结构体field到表字段的名称映射
engine.SetTableMapper(core.SnakeMapper{})
//增
//user := new(User)
//user.Username="tyming"
//affected,err := engine.Insert(user)
//fmt.Println(affected)
//删
//user := new(User)
//user.Username="tyming"
//affected_delete,err := engine.Delete(user)
//fmt.Println(affected_delete)
//改
//user := new(User)
//user.Username="tyming"
//affected_update,err := engine.Id(1).Update(user)
//fmt.Println(affected_update)
//查
user := new(User)
//result,err := engine.Id(1).Get(user)
result,err := engine.Where("id=?",1).Get(user)
fmt.Println(result)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
xorm更多操作可以参考:
1)中文文档:http://www.xorm.io/docs/
2)github的README.md:https://github.com/go-xorm/xorm