xorm的基本使用

来源:互联网 发布:八千湘女嫁新疆知乎 编辑:程序博客网 时间:2024/05/17 05:55

中文文档: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    }

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;

对应的结构体:

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)"`}

工具自动生成方法:使用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 mainimport (    "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)}

xorm更多操作可以参考:
1)中文文档:http://www.xorm.io/docs/
2)github的README.md:https://github.com/go-xorm/xorm

原创粉丝点击