zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    求阶乘及其和
    JAVA 字符串题目 以静态方法实现encode()和decode()的调用
    JAVA 类与对象题目5
    JAVA 类与对象题目4
    JAVA 类与对象题目3
    JAVA 类与对象题目2
    JAVA 基础练习题代码
    JAVA 关于值类型和引用类型的区别
    JAVA学习 判断一个字符或字符是否位于另一个字符串的末尾
    JAVA 截取4个随机数字字母的代码
  • 原文地址:https://www.cnblogs.com/xiaocao123/p/10386985.html
Copyright © 2011-2022 走看看