Goframe快速创建项目,并使用Cli工具创建dao、service、logic

1.项目创建

gf 2.4.4
go 1.20.6

官网 - 项目创建-init
开发文档 - 目录介绍
官网 - 示例项目

1.gf init 项目名 	(创建项目,项目最外层文件还没有创建时)
2.gf init .				(创建项目,项目最外层文件 已创建 )
3.go get -u github.com/gogf/gf/v2	(项目根目录下更新升级框架版本)

在这里插入图片描述

2.Mysql数据库配置

ORM使用配置

1.main.go 添加依赖

import (
	_ "github.com/gogf/gf/contrib/drivers/mysql/v2"
)

2.config.yaml 配置文件

//link : 类型:账号:密码@协议(地址)/数据库名称?特性配置
database:
  logger:
    level: "all"
    stdout: true
  default:
    link: "mysql:root:root@tcp(127.0.0.1:3306)/test"
    debug: true

3.Cli工具dao自动生成

数据规范-gen dao

1.创建配置 hack/config.yaml

# GoFrame CLI tool configuration.
#gfcli:
#  gen:
#    dao:
#      - link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
#        tables: "user"
#        removePrefix: "gf_"
#        descriptionTag: true
#        noModelComment: true

#gfcli:
#  gen:
#    dao:
#      - link:     "mysql:root:12345678@tcp(127.0.0.1:3306)/test"
#        tables:   "order,products"
#        jsonCase: "CamelLower"
#
#      - link:   "mysql:root:12345678@tcp(127.0.0.1:3306)/primary"
#        path:   "./my-app"
#        prefix: "primary_"
#        tables: "user, userDetail"
#
#  # sqlite需要自行编译带sqlite驱动的gf,下载库代码后修改路径文件(gf\cmd\gf\internal\cmd\cmd_gen_dao.go)的import包,取消注释即可。sqlite驱动依赖了gcc
#  - link: "sqlite:./file.db"

gfcli:
  gen:
    dao:
      - link: "mysql:root:root@tcp(127.0.0.1:3306)/test-all"
        tables: "user"
        descriptionTag: true
        noModelComment: true

在这里插入图片描述
2.执行命令

gf gen dao
//命令会生成 几个文件
//		/internal/dao			数据操作对象  - 可扩展修改,但是往往没这种必要
//		/internal/model/do			数据转换模型 - 工具维护,用户不能修改。
//		/internal/model/entity			数据模型 - 用户不能修改。工具每次生成代码文件将会覆盖该目录

dao: 操作采用规范化设计,必须传递 ctx 参数,并在生成的代码中必须通过 Ctx 或者 Transaction 方法创建对象来 链式 操作数据表。
        操作数据表即是通过DAO对象以及相关操作方法实现
        

在这里插入图片描述

在这里插入图片描述

4.业务模型须知

数据模型 与 业务模型

model中的模型分为两类:数据模型和业务模型。

数据模型:cli工具生成的 model/entity , 一般不应该修改,数据模型只有在数据表结构变更时通过CLI工具自动更新。数据模型由CLI工具生成及统一维护。

业务模型:业务模型即是与业务相关的数据结构,按需定义,就是service里面需要的结构体,放到model文件夹下,根据业务自定义维护

业务模型

业务模型主要包含两类:接口输入/输出模型 与 业务输入/输出模型,由model模型层统一管理。

1.接口输入/输出模型,通常api调用,以XxxReq和XxxRes格式命名

2.业务输入/输出模型,以XxxInput和XxxOutput格式命名。

5.Cli工具service/logic自动生成 - 接口

1.导入配置文件 watchers.xml ( 从接口接口维护 - gen service 下载 )
2.编写logic文件夹下逻辑代码
【以logic目录为例,gf gen service只会解析logic/xxx/*.go文件。因此,需要logic层代码结构满足一定规范。】
3.执行 gf gen service
【生成 service文件夹下文件 和 logic/logic.go文件(接口注册文件)】
4.服务实现注入 (仅一次)
func init() {
	service.RegisterXXX(New())
}
5.在启动文件main.go中引用接口实现注册(仅一次)
	- 命令”gf gen service“ 会生成/login/logic.go文件
	- 然后在main.go导入,该文件的引入需要在main包的最顶部引入,需要注意import的顺序,放到最顶部,后面加一个空行。如果同时存在packed包的引入,那么放到packed包后面。
如下
import (
	_ "demo/internal/logic"
)

在这里插入图片描述

6.Controller/Api创建

关于goframe2.0规范路由——请求结构体与响应结构体
接口文档-OpenAPIv3

// 1. Controller
// 注册
func (c *cUser) SignUp(ctx context.Context, req *v1.UserSignUpReq) (res *v1.UserSignUpRes, err error) {
	err = service.User().Create(ctx, model.UserCreateInput{
		Passport: req.Passport,
		Password: req.Password,
		Nickname: req.Nickname,
	})
	return
}


// 2. api
// meta path:"/user/sign-up" 可以不标识
type UserSignUpReq struct {
	g.Meta    `path:"/user/sign-up" method:"post" tags:"UserService" summary:"用户注册"`
	Passport  string `v:"required|length:6,16"`
	Password  string `v:"required|length:6,16"`
	Password2 string `v:"required|length:6,16|same:Password"`
	Nickname  string
}

type UserSignUpRes struct{}


// 3.接口访问路径
http://127.0.0.1:8001/user/sign-up

//-------------------------------
// 1 controller 编写接口
// 2 api 编写 xxRes xxReq
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值