转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/54973203,建议读者阅读原文,确保获得完整的信息
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
type User struct {
Id int
Age int16
Name string
}
func init() {
orm.RegisterDriver("mysql", orm.DRMySQL)
orm.RegisterModel(new(User))
orm.RegisterDataBase("default", "mysql", "root:root@tcp(123.123.123.123:3306)/test?charset=utf8")
}
以下操作的数据库为MySQL,数据表结构为:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`age` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`enabled` int(1) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
插入一条用户记录,用户名为wood。
func insert(){
orm.Debug = true;
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库
user := User{Name: "wood"}
fmt.Println(o.Insert(&user))
}
运行结果
[ORM]2017/02/14 17:46:20 -[Queries/default] - [ OK / db.Exec / 33.6ms] - [INSERT INTO `user` (`age`, `name`) VALUES (?, ?)] - `0`, `wood`
10 <nil>
删除Id等于9的记录,其中Id为主键。
func delete(){
orm.Debug = true;
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库
user := User{Id : 9,Name: "koome"}
fmt.Println(o.Delete(&user))
}
运行结果
[ORM]2017/02/14 17:48:33 -[Queries/default] - [ OK / db.Exec / 37.9ms] - [DELETE FROM `user` WHERE `id` = ?] - `9`
1 <nil>
更新Id等于8的用户名为koome_new。
func update(){
orm.Debug = true;
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库
user := User{Id : 8,Name: "koome_new"}
fmt.Println(o.Update(&user))
}
运行结果
[ORM]2017/02/14 17:49:32 -[Queries/default] - [ OK / db.Exec / 31.6ms] - [UPDATE `user` SET `age` = ?, `name` = ? WHERE `id` = ?] - `0`, `koome_new`, `8`
1 <nil>
执行查询SELECT age, id, name FROM user WHERE enabled = 1
func query(){
var j,i int64
orm.Debug = true;
o := orm.NewOrm()
o.Using("default") // 默认使用 default,你可以指定为其他数据库
var users [] User
num,err := o.Raw("SELECT age, id, name FROM user WHERE enabled = ?",1).QueryRows(&users)
fmt.Println(users)
if err == nil {
fmt.Println("user nums: ", num)
}
i = num
for j = 0; j < i; j++ {
fmt.Printf("Element[%d] = %d\n", j, users[j].Name )
}
}
运行结果
[ORM]2017/02/14 17:51:02 -[Queries/default] - [ OK / db.Query / 18.5ms] - [SELECT age, id, name FROM user WHERE enabled = ?] - `1`
[{1 30 slene} {2 0 new} {4 0 jack} {7 0 loong} {8 0 koome_new} {10 0 wood}]
user nums: 6
Element[0] = %!d(string=slene)
Element[1] = %!d(string=new)
Element[2] = %!d(string=jack)
Element[3] = %!d(string=loong)
Element[4] = %!d(string=koome_new)
Element[5] = %!d(string=wood)
1. must have one register DataBase alias named default
2. sql: expected 3 destination arguments in Scan, not 1