Beego框架ORM的CRUD操作实现
浏览量:408
Beego中数据库的处理很简答,用beego/orm这个工具就可以了。对于数据库操作主要就是增删查改CURD操作。
ORM可以自己建表,我们只需要定义好相关的结构体就好了,然后用相关的函数去注册好就OK。
//定义结构体,名字为表名大写,字段大写,为表的字段
type Book struct {
    Name   string
    Num    int64 `orm:"pk;auto"` //主键,自动增长
    Author string
    Price  float32
}
 
//注册模型
func init() {
    //orm.RegisterModelWithPrefix("book_", new(Book))  //带前缀的表
    orm.RegisterModel(new(Book)) //不带前缀的表
}当然最重要是是要引入这个包
"github.com/astaxie/beego/orm"
现在我们来链接数据库。要提供相应的配置参数。
var dbhost string = "localhost:3306" //主机,米有用到( ⊙ o ⊙ )! var dbuser string = "root" //数据库用户名 var dbpassword string = "" //数据库密码 var db string = "ormtest" //数据库名字
要引入的包是
| "github.com/astaxie/beego" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" | 
初始化数据库
//初始化函数func init() {    //注册mysql Driver    orm.RegisterDriver("mysql", orm.DR_MySQL)    //构造conn连接    conn := dbuser + ":" + dbpassword + "@/" + db + "?charset=utf8"    //注册数据库连接    orm.RegisterDataBase("default", "mysql", conn)}开启自动建表
//自动建表
func createTable() {
    name := "default"                          //数据库别名
    force := false                             //不强制建数据库
    verbose := true                            //打印建表过程
    err := orm.RunSyncdb(name, force, verbose) //建表
    if err != nil {
        beego.Error(err)
    }
}测试数据,在main()函数中先要初始化一个orm对象,指定使用的数据库,并且执行自动建表
o := orm.NewOrm()  //注册新的orm
    o.Using("dafault") //使用数据库,默认default
    createTable()      //开启自动建表接下来就测试增、删、改、查
单一插入数据:
//直接构造对象   
  var book1 *Book = &Book{Name: "蓝色fasfsaf天空", Price: 30.0, Author: "刘凯宁"}
//间接构造对象
  var book2 *Book = new(Book)
    book2.Author = "mq"
    book2.Name = "mq111fasf"
    book2.Price = 100.0
//执行插入,o.Insert()返回的是受影响的id
    fmt.Println(o.Insert(book1))
    fmt.Println(o.Insert(book2))批量插入数据:
//批量插入数据
    books := []Book{
        {Name: "lkn1", Price: 10},
        {Name: "lkn5", Price: 122},
        {Name: "lkn3", Price: 3},
        {Name: "lkn22", Price: 12},
        {Name: "lkn2121", Price: 133},
    }
    //插入,第一个参数为要插入的条数
    o.InsertMulti(5, books)
    fmt.Println(books)读取数据:
//读取记录 book := new(Book) //必须要指定主键 book.Num = 1 o.Read(book) fmt.Println(book) //读取记录,如果没有就新建一个,不用指定主键 book.Author = "qqq" o.ReadOrCreate(book, "Author") fmt.Println(book)
更改数据:
//修改记录,指定主键 book4 := new(Book) book4.Num = 8 book4.Author = "刘凯宁" o.Update(book4, "Author") fmt.Println(book4)
删除数据:
//删除记录,指定主键 book3 := new(Book) book3.Num = 6 o.Read(book3) fmt.Println(book3) o.Delete(book3)

神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。