MySQL一鍵生成實體文件的神器-ginbro


 

Java轉過來的同學對Mybatis的使用肯定不陌生,特別是對一堆表去生成相應的dao和entity的時候使用Mybatis generator所帶來的感觸,無比深刻。前面我們也講過原生的數據庫使用,講過gorm的使用,無論是原生的還是第三方的數據庫工具,都是需要我們手動的寫struct和相應的CRUD的。今天說的這一款插件跟Java中的Mybatis generator一樣,都是能幫我們簡化表與實體對應關系。

安裝

go get github.com/dejavuzhou/ginbro

默認安裝到了$GOPATH/bin中。

使用

接下來使用如下方式去連接你的數據庫,以下拿MYSQL數據庫示例:

ginbro gen -u userName -p pwd -a "IP:port" -d databaseName -o "projectName"

上述命令表示連接相應的數據庫,用戶名密碼,對應的庫名。最后是你想生成的工程名稱。

相應的參數:

Flags:
   	  --config string          指定config文件名 (default is $HOME/ginbro.yaml)
  -h, --help                   help for ginbro
  -a, --mysqlAddr string       MySQL host:port (default "127.0.0.1:3306")
  -c, --mysqlCharset string    MySQL charset (default "utf8")
  -d, --mysqlDatabase string   MySQL database name
  -p, --mysqlPassword string   MySQL password (default "password")
  -u, --mysqlUser string       MySQL user name (default "root")

工程默認生成到$GOPATH/src目錄下。

工程結構如下:

demo
	config/  配置文件所在目錄
	handlers/ 使用gin 生成對http接口
	models/ 數據庫表對應的實體
	static/ 靜態文件
	swagger/ swagger
	tasks/ 定時任務相關
	main.go 啟動類
	config.toml 主配置文件

運行main函數,控制台可以看到swagger的訪問地址:

http://127.0.0.1:5555/swagger

訪問swagger你能看到給你生成了一些表對應的CRUD的接口。

ginbro 生成app代碼包含功能簡介

  • 生成完善RESTful APIs 應用

  • 自動生成完善的Swagger文檔

  • 自動生成數據庫表的模型和標注

  • 支持 JWT Authorization Bearer 身份驗證 and JWT 中間件

  • 支持登陸防火牆

  • 支持靜態資源替代nginx

  • 可配置的跨域cors中間件

  • 用戶友好的自定義配置

  • 支持定時任務

  • 支持圖形工具GUI

  • 內置高效率的內存數據庫

依賴框架

go get github.com/gin-contrib/cors
go get github.com/gin-contrib/static
go get github.com/gin-gonic/autotls
go get github.com/gin-gonic/gin
go get github.com/sirupsen/logrus
go get github.com/spf13/viper
go get github.com/spf13/cobra
go get github.com/go-redis/redis
go get github.com/go-sql-driver/mysql
go get github.com/jinzhu/gorm
go get github.com/dgrijalva/jwt-go

gin框架相關,viper配置文件解析框架,gorm數據庫框架。

開發計划

已完成:

  • Auth 和 JWT middleware
  • 支持一鍵生產jwt密碼驗證
  • 分頁總數做mem緩存
  • json不現實password等隱私字段
  • 生成友好的.gitignore
  • go test 單元測試
  • 完善go doc

未完成:

  • 支持MongoDB數據庫
  • 更具體數據映射關聯模型
  • 支持PostgreSQL數據庫
  • 支持生成gRPC服務
  • 更詳細的gorm tag信息
  • swaggerDoc參數說明繼續優化
  • 支持其他語言框架(php-laravel/lumne ,python flask …)
  • sqlite

注意

  • mysql表中沒有id/ID/Id/iD字段將不會生成路由和模型
  • json字段 在update/create的時候 必須使可以序列號的json字符串(eg0:"{}" eg1:"[]"),否則mysql會報錯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM