beego之orm多条数据插入
2016-02-03 14:38
851 查看
有些数据库,比如MySQL支持一次性插入多条数据的语法,当然也有些数据库不支持。这里演示了两种方法,一种适用于支持多条数据插入语法的数据库,另外一个适用于不支持多条数据插入语法的数据库,两者都能实现一次性插入多条数据的功能。
这里用到的两个方法:
不多说,上代码:
在第一个函数
这里用到的两个方法:
InsertMulti和
PrepareInsert的原型如下:
func (o *querySet) PrepareInsert() (Inserter, error) func (o *orm) InsertMulti(bulk int, mds interface{}) (int64, error)
不多说,上代码:
package main import ( "fmt" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) const ( DRIVER_NAME = "mysql" DATA_SOURCE = "root:root@tcp(localhost:3306)/beegodb?charset=utf8&loc=Asia%2FShanghai" MAX_IDLE_CONN = 5 MAX_OPEN_CONN = 30 ) type User struct { Id int Name string `orm:"size(20)"` Email string `orm:"size(50)"` Age int IsActive bool } func registerDB() { orm.Debug = true orm.RegisterDataBase("default", DRIVER_NAME, DATA_SOURCE, MAX_IDLE_CONN, MAX_OPEN_CONN) orm.RegisterModel(new(User)) orm.RunCommand() } func multiInsertUsers() { users := []User{ User{Name: "jemy", Email: "jemy@golanghome.com", Age: 25}, User{Name: "john", Email: "john@golanghome.com", Age: 24}, User{Name: "amy", Email: "amy@golanghome.com", Age: 22}, User{Name: "steven", Email: "steven@golanghome.com", Age: 26}, User{Name: "dolphin", Email: "dolphin@golanghome.com", Age: 21}, User{Name: "alex", Email: "alex@golanghome.com", Age: 32}, User{Name: "bob", Email: "bob@golanghome.com", Age: 25}, User{Name: "thomas", Email: "thomas@golanghome.com", Age: 25}, User{Name: "chris", Email: "chris@golanghome.com", Age: 38}, User{Name: "peter", Email: "peter@golanghome.com", Age: 40}, } createUsers1(users) fmt.Println("----------------------------------------------") createUsers2(users) } func createUsers1(users []User) { if num, err := orm.NewOrm().InsertMulti(len(users), users); err != nil { fmt.Println(err) } else { fmt.Printf("Insert %d users' data!\r\n", num) } } func createUsers2(users []User) { inserter, _ := orm.NewOrm().QueryTable("user").PrepareInsert() for _, user := range users { inserter.Insert(&user) } } func main() { registerDB() multiInsertUsers() }
在第一个函数
createUsers1里面,我们使用beego的orm提供的
InsertMulti方法来一次性插入多条数据。在第二个函数
createUsers2里面,我们使用orm的
PrepareInsert方法先创建一个
inserter插入器,这个
inserter可以用来多次插入数据。对于整个函数来讲,就是一次性插入多条数据了。
createUsers2使用了PrepareInsert,记得结束的时候要关闭掉。如下:
func createUsers2(users []User) { inserter, _ := orm.NewOrm().QueryTable("user").PrepareInsert() for _, user := range users { inserter.Insert(&user) } inserter.Close() }
相关文章推荐
- beego和bee的安装、自动生成API框架
- hdu 1847 Good Luck in CET-4 Everybody! 动态规划/巴什博弈
- 用Beego和beego admin开源框架开发的后台管理系统
- mongoose 文档(一) schemas
- 用的是google 的swing ,二维码生成工具类
- golang rbac框架
- Go 1.6 release party
- CDOJ 1271 Search gold
- golang 移动应用例子 example/basic 源码框架分析
- LeetCode Algorithms #206 <Reverse Linked List>
- hdu 1056 HangOver
- django学习心得
- django 的几个操作指令及错误解决方法
- django url调度
- LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
- LightOJ--1152--Hiding Gold(二分图奇偶建图)(好题)
- go语言介绍
- MapReduce:超大机群上的简单数据处理(Google三大论文之一)
- hdu3966Aragorn's Story【树链剖分+树状数组】
- Kibana 修改logo及汉化导航