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)
神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。