Beego框架ORM的CRUD操作实现
浏览量:410
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)

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