gf框架-模型自动生成

2020-03-01  本文已影响0人  王哈哈就很棒

语法
gf gen model [PATH] [OPTION]

示例

gf gen model
gf gen model -l "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
gf gen model ./model -l "mssql:sqlserver://sa:12345678@127.0.0.1:1433?database=test"
gf gen model ./model -c config.yaml -g user-center -t user,user_detail,user_login
gf gen model -p user_,p_

模型生成采用了Active Record设计模式。该命令将会根据数据表名生成对应的目录,该目录名称即数据表包名。目录下自动生成3个文件:

数据表名.go自定义文件,开发者可以自由定义填充的代码文件,仅会生成一次,每一次模型生成不会覆盖。
数据表名_entity.go表结构文件,根据数据表结构生成的结构体定义文件,包含字段注释。数据表在外部变更后,可使用gen命令重复生成更新该文件。
数据表名_model.go 表模型文件,为数据表提供了许多便捷的CURD操作方法,并可直接查询返回该表的结构体对象。数据表在外部变更后,可使用gen命令重复生成更新该文件。

代码示例

package main

import (
    "fmt"
    "github.com/gogf/gf/frame/g"
    "p3/app/model/mytable"
)


func main() {
    // 查询所有数据
    result, err := mytable.FindAll()
    if err != nil {
        panic(err)
    }

    // 遍历数据
    for _, val := range result{
        fmt.Printf("id: %d  name:%s\n", val.Id, val.Name)
    }

    // 查询单条数据
    data, err := mytable.FindOne()
    if err != nil {
        panic(err)
    }
    fmt.Printf("id: %d  name:%s\n", data.Id, data.Name)


    // 条件查询, 查询name为王哈哈的
    dataList, err := mytable.FindAll(g.Map{
        "name": "王哈哈",
    })
    if err != nil {
        panic(err)
    }

    for _, val := range dataList {
        fmt.Printf("id: %d  name:%s\n", val.Id, val.Name)
    }

    // 查询数据总条数
    num, err := mytable.FindCount()
    if err != nil {
        panic(err)
    }
    fmt.Printf("共有 %d 条数据\n", num)


    // 插入数据
    _, err = mytable.Insert(g.Map{
        "name": "王哈哈",
    })

    if err != nil {
        panic(err)
    } else {
        fmt.Println("插入数据成功")
    }

    // 删除数据
    _, err  = mytable.Delete(g.Map{
        "id": 3,
    })
    if err != nil {
        panic(err)
    } else {
        fmt.Println("删除数据成功")
    }

    // 修改数据, 把id为8的name改为王大炮
    mytable.Update(g.Map{"name": "王大炮"}, "id", 8)

    // 修改多个字段, 把id为9的数据name改为小可爱,id改为10000
    mytable.Update(g.Map{"name": "小可爱", "id": 10000}, "id", 9)
}

上一篇 下一篇

猜你喜欢

热点阅读