xorm插入数据库后返回主键自增id

时间:2021-02-22 21:43:03

golang使用xorm连接数据库后,插入结构体,无法返回自增主键id,饭后的主键id都是0。经过研究发现,如果给结构体id设置xorm tag,则会默认id为0,不会返回插入成功后的主键id。

xorm文档中如下描述

xorm插入数据库后返回主键自增id

 

 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:123456@tcp(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 }