使用xorm将结构体转为sql文件

前言

xorm支持自动增量同步数据表结构。即:
你定义好的结构体 ---> 数据库对应的表

操作步骤

(1)定义结构体

type User struct {
    Id int              //表id
    Name string         //姓名
    ...
}

(2)编写代码,执行自动增量同步(mysql为例)

import (
    "fmt"
    "testing"

    _ "github.com/go-sql-driver/mysql"
    "github.com/go-xorm/xorm"
)

func Test(t *testing.T) {
    engine, err := xorm.NewEngine("mysql",
        "root:密码@/数据库表名?charset=utf8")
    if err != nil {
        fmt.Println(err.Error())
    }
    err = engine.Sync(new(User))
}

需要注意

(1)如果出现 cannot return value obtained from unexported field or method 错误:
   原因是xorm通过反射访问结构体,Go语言中小写默认为private,所以不能通过反射获取其值。
   所以只需要消除结构体中字段首字母不为大写的情况即可。
(2)关于名称映射
   我们使用的是默认的core.SnakeMapper,它会将驼峰式命名转化为下划线。
   例: RegisterTime  --->  register_time

(3)获得SQL文件

终端执行:

mysqldump -uroot -p密码 数据库名 > xxx.sql

这样就完成了整个操作过程。

你可能感兴趣的:(web开发)