go-frame
https://github.com/gogf/gf
https://goframe.org/pages/viewpage.action?pageId=1114119
https://goframe.org/pages/viewpage.action?pageId=43391262
3个参考案例
https://github.com/goflyfox/gmanager
https://github.com/XiaobinZhao/my-gf
https://github.com/gogf/focus-single
1、定义数据结构,在数据库建表,配置config.yaml数据库、gf cli配置(另外建个目录放)
- created_at、updated_at、deleted_at 有这几个字段时,启动时间记录和软删除
- 字段名 不区分大小写,也会忽略特殊字符
- 加上Unscoped()时忽略自动时间更新特性
2、使用生成 dao/do/entity
- 一般生成的内容不需要、也尽量不去修改,避免下次生成覆盖
- 目前了解到如果需要配置orm模型关联需要修改
3、在api/controller/service,model里的inputModel和outputModel等处写业务代码
新增
Insert:使用INSERT INTO语句进行数据库写入,如果写入的数据中存在主键或者唯一索引时,返回失败,否则写入一条新数据
InsertIgnore:用于写入数据时如果写入的数据中存在主键或者唯一索引时,忽略错误继续执行写入
InsertAndGetId:用于写入数据时并直接返回自增字段的ID
更新
Update用于数据的更新,往往需要结合Data及Where方法共同使用
注意,更新一般都需要使用事务来控制
删除
Delete方法用于数据的删除。
查询及结果处理
条件查询
All 用于查询并返回多条记录的列表/数组。
用struct或[]struct接收orm查询返回结果的映射规则:
- struct中需要匹配的属性必须为公开属性(首字母大写)
- 记录结果中键名会自动按照 不区分大小写 且 忽略-/_/空格符号 的形式与struct属性进行匹配
- 如果匹配成功,那么将键值赋值给属性,如果无法匹配,那么忽略该键值
返回结果判断及处理:直接判断返回的数据是否为nil或者长度为0,或者使用IsEmpty/IsNil方法
发布静态资源
配置swagger-ui
引入swagger-ui资源
注册路由,和gf自带的redoc路由/swagger错开,否则会被覆盖