beego

            beego使用orm包操作数据库

1、Model的设置

1 //声明一个结构体,用于映射数据库表
2 type Person struct {
3     Id int
4     Name string `orm:"size(100)"`
5     Age int
6 }

2、数据库的设置

RegisterDrive

1 // 参数1   driverName
2 // 参数2   数据库类型
3 // 这个用来设置 driverName 对应的数据库类型
4 // mysql / sqlite3 / postgres 这三种是默认已经注册过的,所以可以无需设置
5 orm.RegisterDriver("mysql", orm.DRMySQL)

RegisterDataBase

ORM 必须注册一个别名为 default 的数据库,作为默认使用。

 1 // 参数1        数据库的别名,用来在 ORM 中切换数据库使用
 2 // 参数2        driverName
 3 // 参数3        对应的链接字符串
 4 orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8")
 5 
 6 // 参数4(可选)  设置最大空闲连接
 7 // 参数5(可选)  设置最大数据库连接 (go >= 1.2)
 8 maxIdle := 30
 9 maxConn := 30
10 orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8", maxIdle, maxConn)

SetMaxIdleConns

根据数据库的别名,设置数据库的最大空闲连接

orm.SetMaxIdleConns("default", 30)

SetMaxOpenConns

根据数据库的别名,设置数据库的最大数据库连接 (go >= 1.2)

orm.SetMaxOpenConns("default", 30)

注册模型

如果使用 orm.QuerySeter 进行高级查询的话,这个是必须的。

package main

import "github.com/astaxie/beego/orm"

type User struct {
    Id   int
    Name string
}

func init(){
    orm.RegisterModel(new(User))
}

RegisterModel 也可以同时注册多个 model

orm.RegisterModel(new(User), new(Profile), new(Post))

RegisterModelWithPrefix

使用表名前缀

orm.RegisterModelWithPrefix("prefix_", new(User))

beego设置自动创建表

1    //参数1      使用默认的数据库
2     //参数2     为true如果当前语句发送错误,则执行下一条语句
3     //参数3     为true表示打印建表和sql执行的信息
4     orm.RunSyncdb("default",false,true)

调试模式打印查询语句

1 orm.Debug = true

3、ORM 接口使用

 1 //查询操作
 2 func read(){
 3     o := orm.NewOrm()
 4     person := Person{Id:2}
 5     err := o.Read(&person)
 6     if err != nil {
 7         fmt.Println("err=",err)
 8     }
 9     logs.Info("查询成功")
10 }
11 
12 //插入操作
13 func insert(){
14     o := orm.NewOrm()
15     person := Person{Name:"朝阳",Age:19}
16     _,err := o.Insert(&person)
17     if err != nil {
18         fmt.Println("插入失败")
19         fmt.Println("err=",err)
20     }
21 }
22 
23 //更新操作
24 func update(){
25     o := orm.NewOrm()
26     person := Person{Id:3,Name:"baihu",Age:20}
27     _,err := o.Update(&person)
28     if err != nil {
29         fmt.Println("err=",err)
30     }
31     fmt.Println("更新成功")
32 
33 }
34 
35 //删除操作
36 func delete(){
37     o := orm.NewOrm()
38     person := Person{Id:3}
39     n,err := o.Delete(&person)
40     if err != nil {
41         fmt.Println("err=",err)
42     }
43     fmt.Printf("成功删除%d条记录",n)
44 }
原文地址:https://www.cnblogs.com/xiaocao123/p/10386985.html