beego 程式碼自動生成器
平時我們用 Beego 開發小專案的時候,經常會遇到一個這樣的問題,就是同樣的業務 ,程式碼我們要重複寫好多次,改的只是一個小小的地方。即使是複製也會顯得很繁瑣。所以我不自量力搞了個工具幫助我們快速實現增刪查改操作。下面來介紹一下這個小工具。
Gii beego 自動化程式碼生成
1.介紹
Gii 是一個為了協助快速開發 beego 專案而建立的專案,通過 Gii 您可以很容易地為你已存在的資料表在你指定的目錄建立 Model 以及 Controller 。它基於 beego 為你寫好created ,update,put,已經 delete 等操作方法。
注意不能完全依靠 Gii 為你生成的東西,你需要檢查一下再進行使用。
2.安裝
您可以通過如下的方式安裝 bee 工具:
go get github.com/1920853199/go-gii
3.使用
package main
import (
"github.com/1920853199/go-gii"
)
func main() {
source := "xxxx:xxxxxxxx@tcp(127.0.0.1)/abc"
gii.Column(source,"article","")
//beego.Run()
}
引數介紹
- 第一個引數 source :資料庫連線資訊
- 第二個引數 name 資料表名稱
- 第三個引數 controllerPath 是指定 Controller 生成的路徑
直接執行這個檔案後會在 beego 專案的目錄的 models下生成對應資料表的 model,在 controller 下的指定路徑生成控制器
結果:
Controller article.go
程式碼
package home
import (
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"github.com/astaxie/beego/validation"
)
type ArticleController struct {
beego.Controller
}
func (c *ArticleController) List() {
limit, _ := beego.AppConfig.Int64("limit") // 一頁的數量
page, _ := c.GetInt64("page", 1) // 頁數
offset := (page - 1) * limit // 偏移量
o := orm.NewOrm()
obj := new(models.Article)
var data []*models.Article
qs := o.QueryTable(obj)
// 獲取資料
_, err := qs.OrderBy("-id").Limit(limit).Offset(offset).All(&data)
if err != nil {
c.Abort("404")
}
/*c.Data["json"]= &data
c.ServeJSON()
c.StopRun()*/
// 統計
count, err := qs.Count()
if err != nil {
c.Abort("404")
}
c.Data["Data"] = &data
c.Data["Count"] = count
c.Data["Limit"] = limit
c.Data["Page"] = page
}
func (c *ArticleController) Put() {
id, err := c.GetInt("id", 0)
if id == 0 {
c.Abort("404")
}
// 基礎資料
o := orm.NewOrm()
obj := new(models.Article)
var data []*models.Article
qs := o.QueryTable(obj)
err = qs.Filter("id", id).One(&data)
if err != nil {
c.Abort("404")
}
c.Data["Data"] = data[0]
}
func (c *ArticleController) Update() {
id, _ := c.GetInt("id", 0)
/*c.Data["json"] = c.Input()
c.ServeJSON()
c.StopRun()*/
response := make(map[string]interface{})
o := orm.NewOrm()
obj := models.Article{Id: id}
if o.Read(&obj) == nil {
// 需要補充修改的資訊
// 如 :obj.Reply = reply
valid := validation.Validation{}
// 補充需要驗證的資訊
// 如:valid.Required(message.Reply, "Reply")
if valid.HasErrors() {
// 如果有錯誤資訊,證明驗證沒通過
// 列印錯誤資訊
for _, err := range valid.Errors {
//log.Println(err.Key, err.Message)
response["msg"] = "新增失敗!"
response["code"] = 500
response["err"] = err.Key + " " + err.Message
c.Data["json"] = response
c.ServeJSON()
c.StopRun()
}
}
if _, err := o.Update(&obj); err == nil {
response["msg"] = "修改成功!"
response["code"] = 200
response["id"] = id
} else {
response["msg"] = "修改失敗!"
response["code"] = 500
response["err"] = err.Error()
}
} else {
response["msg"] = "修改失敗!"
response["code"] = 500
response["err"] = "ID 不能為空!"
}
c.Data["json"] = response
c.ServeJSON()
c.StopRun()
}
func (c *ArticleController) Delete() {
id, _ := c.GetInt("id", 0)
response := make(map[string]interface{})
o := orm.NewOrm()
obj := models.Article{Id: id}
if _, err := o.Delete(&obj); err == nil {
response["msg"] = "刪除成功!"
response["code"] = 200
}else{
response["msg"] = "刪除失敗!"
response["code"] = 500
response["err"] = err.Error()
}
c.Data["json"] = response
c.ServeJSON()
c.StopRun()
}
Model Article.go
程式碼
package models
import (
"github.com/astaxie/beego/orm"
"time"
)
type Article struct {
Id int
Title string
BusinessType string
BusinessName string
DemandType string
Province string
City string
District string
Address string
Content string `orm:"type(text)"`
PublisherId float64
PublishDate time.Time `orm:"type(datetime)"`
Created time.Time `orm:"auto_now_add;type(datetime)"`
}
func init() {
// 需要在init中註冊定義的model
orm.RegisterModel(new(Article))
}
實現上可能會存在很多的缺點不足,希望各位大佬不吝賜教。最後如果大家有覺得還有一點點存在的價值的話給個星星鼓勵一下謝謝各位。Github:https://github.com/1920853199/go-gii
相關文章
- mybatis-generator-程式碼自動生成器MyBatis
- Mybatis自動程式碼生成器的實現MyBatis
- beego框架程式碼分析Go框架
- beego自動建表失敗Go
- MyBatis Generator 程式碼自動生成器,從此解放你的雙手MyBatis
- 動軟程式碼生成器學習
- 程式碼生成器
- 自動寫程式碼?
- 程式碼生成器,自適應mysql、oracle資料庫MySqlOracle資料庫
- MyBatisPlus效能分析外掛,條件構造器,程式碼自動生成器詳解MyBatis
- beego 使用 coding 的 webhook 2.0 進行自動部署GoWebHook
- Laravel 程式碼生成器Laravel
- SpringBoot程式碼生成器Spring Boot
- nodejs 自動程式碼提示NodeJS
- go模板-程式碼生成器Go
- MyBatis Plus程式碼生成器MyBatis
- Heroku 自動部署 GitHub 程式碼Github
- chagpt自動生成PPT程式碼GPT
- 使用 git 自動部署程式碼Git
- Android JNI 程式碼自動生成Android
- 程式碼自動生成外掛:
- vue 執行程式碼自動啟動Vue行程
- Eclipse點選空格總是自動補全程式碼怎麼辦,如何自動補全程式碼,程式碼提示Eclipse
- Javascript 之《如何自動執行生成器》JavaScript
- jenkins自動釋出java程式碼JenkinsJava
- Visual Studio程式碼去掉自動空格
- webstorm自動格式化程式碼WebORM
- SpringBoot程式碼生成器,從此不用手擼程式碼Spring Boot
- SpringBoot啟動程式碼和自動裝配原始碼分析Spring Boot原始碼
- JNPF低程式碼開發框架程式碼 生成器設計框架
- mybatis_plus程式碼生成器類MyBatis
- MyBatis-Plus之程式碼生成器MyBatis
- Cruddiy:無程式碼Bootstrap CRUD生成器boot
- java程式碼生成器(controller,service,mapper)JavaControllerAPP
- MyBatis程式碼生成器的實用MyBatis
- java 程式碼生成器設計方案Java
- 低程式碼如何推動自動化未來
- webstorm配置Autoprefixer,自動補齊程式碼WebORM