晓夏

北漂的女孩

Good Luck To You!

Beego框架ORM的CRUD操作实现

浏览量:405

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)













神回复

发表评论:

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