1. 程式人生 > >xorm插入資料庫後返回主鍵自增id

xorm插入資料庫後返回主鍵自增id

golang使用xorm連線資料庫後,插入結構體,無法返回自增主鍵id,飯後的主鍵id都是0。經過研究發現,如果給結構體id設定xorm tag,則會預設id為0,不會返回插入成功後的主鍵id。

xorm文件中如下描述

 

 1 package main
 2 
 3 import (
 4     "fmt"
 5     "time"
 6 
 7     _ "github.com/go-sql-driver/mysql"
 8     "github.com/go-xorm/xorm"
 9 )
10 
11 type User struct {
12     // 如果此處 `xorm:"id"`,則插入資料的時候,會預設為0,插入成功後不會把新插入的id返回,如果想得到插入後的主鍵id,則id不需要寫`xorm:"id"`
13 Id int64 //`xorm:"id"` 14 Name string `xorm:"name"` 15 Created time.Time `xorm:"created"` 16 Updated time.Time `xorm:"updated"` 17 Deleted time.Time `xorm:"deleted"` 18 } 19 20 // 設定user結構體對應的表名 21 func (User) TableName() string { 22 return "test_user_2" 23 } 24
25 func main() { 26 engine, err := xorm.NewEngine("mysql", "root:[email protected](10.10.30.99:3306)/test?charset=utf8") 27 if err != nil { 28 fmt.Println("connect mysql is failed, err:", err) 29 } 30 31 u := &User{ 32 Name: "aaa", 33 } 34 // 可插入多條engine.Insert(u1,u2)
35 affecte, err := engine.Insert(u) 36 if err != nil { 37 fmt.Println("insert is failed,err:", err) 38 } 39 fmt.Println("affect=", affecte, u.Id) 40 }