beego ORM配置及使用实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loongshawn/article/details/54973203

转载请注明来源-作者@loongshawn:http://blog.csdn.net/loongshawn/article/details/54973203,建议读者阅读原文,确保获得完整的信息

1、ORM配置

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

2、操作实例

以下操作的数据库为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;

这里写图片描述

2.1、数据插入

插入一条用户记录,用户名为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>

2.2、数据删除

删除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>

2.3、数据更新

更新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>

2.4、数据查询

执行查询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)

当前数据库数据
这里写图片描述

3、Q&A

1. must have one register DataBase alias named default
2. sql: expected 3 destination arguments in Scan, not 1

猜你喜欢

转载自blog.csdn.net/loongshawn/article/details/54973203