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会报错

MySQL一键生成实体文件的神器-ginbro的更多相关文章

  1. VS2015 +EF6 连接MYSQL数据库生成实体

      VS2015 +EF6 连接MYSQL数据库生成实体   已安装软件:VS2015                       XAMPP Control Panel(Mysql服务器)      ...

  2. java 写 Excel(不生成实体文件,写为流的形式)

    java 写 Excel(不生成实体文件,写为流的形式) public String exportReportExcel(String mediaCode, List<SimpleMediaRe ...

  3. Java写Excel(不生成实体文件,写为流的形式)

    java 写 Excel(不生成实体文件,写为流的形式) public String exportReportExcel(String mediaCode, List<SimpleMediaRe ...

  4. Entity Framework Core一键生成实体命令

    打开Vs中工具——Nug包管理器——程序包管理控制台 设置启动项目为存储实体模型的类库或控制台 Scaffold-DbContext  "数据库连接字符串" Microsoft.E ...

  5. Oracle,Mysql,SQlserver生成实体映射之SqlSugarT4

    官网:http://www.codeisbug.com 代码已上传GitHub:https://github.com/SeaLee02/sealee 本篇主要讲使用SqlSugar包进行Model生成 ...

  6. .Net Core 从MySql数据库生成实体类 Entity Model

    1.首先建测试库 2.新建一个.Net Core 项目 3. cd到项目里面执行命令: dotnet add package MySql.Data.EntityFrameworkCore 4.继续执行 ...

  7. flask使用pymysql连接MySQL,生成xls文件并下载到本地

    版本一:将MySQL数据写入到excel(xsl)文件并下载到默认文件夹(一般问电脑的下载文件夹里面),并显示特效到前端页面. flask框架连接MySQL,我们使用pymsql这个工具,如下操作: ...

  8. mysql无法生成log文件

    做服务器主从配置时,发现/var/log/mysql下面一直没有log文件,明明配置文件/etc/mysql/mysql.conf.d/mysqld.cnf也开启log了. general_log_f ...

  9. 使用MATLAB一键制作mif文件

    本文档主要讲解实现一个16384(2^14)点的14位正弦波数据mif格式文件的生成,使用此文件,我们便可以在FPGA上基于直接数字合成(DDS)原理生成标准的正弦波,即实现信号发生器的功能.关于DD ...

随机推荐

  1. 蓝桥杯:合并石子(区间DP+平行四边形优化)

    http://lx.lanqiao.cn/problem.page?gpid=T414 题意:…… 思路:很普通的区间DP,但是因为n<=1000,所以O(n^3)只能拿90分.上网查了下了解了 ...

  2. InnoDB存储引擎--学习笔记-redo log

    目录 1. 引言 2. 重做日志文件和相关概念介绍 + 2.1. 重做日志文件和bin log + 2.2. LSN(log squence number) 3. 重做日志文件基本工作原理 4. 重做 ...

  3. kuangbin专题 专题一 简单搜索 Catch That Cow POJ - 3278

    题目链接:https://vjudge.net/problem/POJ-3278 题意:人可以左移动一格,右移动一格,或者移动到当前位置两倍下标的格子 思路:把题意的三种情况跑bfs,第一个到达目的地 ...

  4. scala刷LeetCode--26 删除排序数组中的重复项

    一.题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完 ...

  5. break使用不当引发的一个“血案”

    最近在网上冲浪,读到一则新闻,摘抄下这则新闻: ======================= 以下文字摘抄自互联网==================== 1990年1月15日,AT&T电话 ...

  6. 聊聊C语言的预编译指令include

    "include"相信大家不会陌生,在我们写代码时,开头总会来一句"include XXX".include是干嘛用的,很多教材都提到了,因此这里不会再详细解释 ...

  7. 【基础算法-模拟-例题-金币】-C++

    原题链接:P2669 金币 这道题目完全是一道模拟题,只要按照题目中的加金币的算法和sum累加就可以很轻易得出最终答案. 说一下有一些点需要注意: 1.用i来计每天发的金币数,n来计已经拿了金币的天数 ...

  8. javascript案例之照片墙

    效果图: ----------------------------------------------------------------------------------------------- ...

  9. 客户端内嵌Vue页面

    目前很多应用都存在网页端和客户端形式,例如常用的:钉钉.微信等.按传统的开发形式,需要为客户端开发一套界面.基于当前Web应用可以利用三大前端框架和UI框架快速开发出各种酷炫的界面,于是出现了客户端嵌 ...

  10. 知识图谱学习与实践(4)——通过例句介绍Sparql的使用

    通过例句介绍Sparql的使用 1 简介 SPARQL的定义,是一个递归的定义,为SPARQL Protocal and RDF Query Language,是W3C制定的RDF知识图谱标准查询语言 ...