beego mysql 生成_beego 代码生成工具体验
发布日期:2021-06-24 13:14:22 浏览次数:2 分类:技术文章

本文共 6266 字,大约阅读时间需要 20 分钟。

# beego 代码生成工具体验

## 设计 MySQL 数据库

1. 通过 MySQL Workbench EER Digram 设计表和关系

![image.png](https://static.studygolang.com/200626/7a33780bbf688321021bc24c6dafdb66.png)

2. 设置 MySQL Workbench 默认目标版本和 MySQL 服务器版本一致

![image.png](https://static.studygolang.com/200626/c8bdc9157ef101c9d3bdaec663ee22ba.png)

3. 同步模型到数据库

![image.png](https://static.studygolang.com/200626/d6e27a7702c252fea38ed2b942ddbfe5.png)

```

-- MySQL Workbench Synchronization

-- Generated: 2020-06-26 12:07

-- Model: New Model

-- Version: 1.0

-- Project: Name of the project

-- Author: medea

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;

SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

CREATE TABLE IF NOT EXISTS `dotblog`.`users` (

`id` INT(11) NOT NULL COMMENT '用户ID',

`name` VARCHAR(255) NOT NULL COMMENT '用户名称',

`password` VARCHAR(255) NOT NULL COMMENT '用户密码',

`email` VARCHAR(255) NOT NULL COMMENT '用户邮箱',

`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '用户创建时间',

`avatar` MEDIUMTEXT NULL DEFAULT NULL COMMENT '用户头像',

PRIMARY KEY (`id`),

UNIQUE INDEX `username_UNIQUE` (`name` ASC),

UNIQUE INDEX `email_UNIQUE` (`email` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `dotblog`.`articles` (

`id` INT(11) NOT NULL COMMENT '文章ID',

`title` VARCHAR(255) NULL DEFAULT NULL COMMENT '文章标题',

`users_id` INT(11) NOT NULL COMMENT '文章用户',

`content` TEXT(65535) NOT NULL COMMENT '文章内容',

`create_time` TIMESTAMP NOT NULL COMMENT '文章创建时间',

PRIMARY KEY (`id`),

INDEX `fk_articles_users_idx` (`users_id` ASC),

CONSTRAINT `fk_articles_users`

FOREIGN KEY (`users_id`)

REFERENCES `dotblog`.`users` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `dotblog`.`tags` (

`id` INT(11) NOT NULL COMMENT '标签ID',

`tag` VARCHAR(255) NOT NULL COMMENT '标签值',

PRIMARY KEY (`id`),

UNIQUE INDEX `tag_UNIQUE` (`tag` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `dotblog`.`categories` (

`id` INT(11) NOT NULL COMMENT '类型ID',

`category` VARCHAR(255) NOT NULL COMMENT '类型值',

PRIMARY KEY (`id`),

UNIQUE INDEX `category_UNIQUE` (`category` ASC))

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `dotblog`.`article_comments` (

`id` INT(11) NOT NULL COMMENT '评论ID',

`users_id` INT(11) NOT NULL COMMENT '评论用户',

`articles_id` INT(11) NOT NULL COMMENT '评论文章',

`comment` TEXT(65535) NOT NULL COMMENT '评论内容',

`create_time` TIMESTAMP NOT NULL COMMENT '评论创建时间',

PRIMARY KEY (`id`),

INDEX `fk_comments_users1_idx` (`users_id` ASC),

INDEX `fk_comments_articles1_idx` (`articles_id` ASC),

CONSTRAINT `fk_comments_users1`

FOREIGN KEY (`users_id`)

REFERENCES `dotblog`.`users` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_comments_articles1`

FOREIGN KEY (`articles_id`)

REFERENCES `dotblog`.`articles` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `dotblog`.`article_tags` (

`id` INT(11) NOT NULL COMMENT '文章标签ID',

`articles_id` INT(11) NOT NULL COMMENT '文章ID',

`tags_id` INT(11) NOT NULL COMMENT '标签ID',

PRIMARY KEY (`id`),

INDEX `fk_article_tags_articles1_idx` (`articles_id` ASC),

INDEX `fk_article_tags_tags1_idx` (`tags_id` ASC),

CONSTRAINT `fk_article_tags_articles1`

FOREIGN KEY (`articles_id`)

REFERENCES `dotblog`.`articles` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_article_tags_tags1`

FOREIGN KEY (`tags_id`)

REFERENCES `dotblog`.`tags` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

CREATE TABLE IF NOT EXISTS `dotblog`.`article_categories` (

`id` INT(11) NOT NULL COMMENT '文章类型ID',

`articles_id` INT(11) NOT NULL COMMENT '文章ID',

`categories_id` INT(11) NOT NULL COMMENT '类型ID',

INDEX `fk_article_categories_articles1_idx` (`articles_id` ASC),

INDEX `fk_article_categories_categories1_idx` (`categories_id` ASC),

PRIMARY KEY (`id`),

CONSTRAINT `fk_article_categories_articles1`

FOREIGN KEY (`articles_id`)

REFERENCES `dotblog`.`articles` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_article_categories_categories1`

FOREIGN KEY (`categories_id`)

REFERENCES `dotblog`.`categories` (`id`)

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8mb4

COLLATE = utf8mb4_unicode_ci;

SET SQL_MODE=@OLD_SQL_MODE;

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;

SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

```

## bee api 命令生成项目

1. 执行 `bee api dotblog` 命令生成项目

2. 执行 `go mod init` 生成 go.mod

```

.

├── conf

│ └── app.conf

├── controllers

│ ├── object.go

│ └── user.go

├── go.mod

├── main.go

├── models

│ ├── object.go

│ └── user.go

├── routers

│ └── router.go

└── tests

└── default_test.go

```

3. 执行 `bee generate appcode -driver=mysql -conn="user:pwd@tcp(127.0.0.1:3306)/dotblog" -level=3` 基于数据库生成 models、controllers、routers 代码文件

```

.

├── conf

│ └── app.conf

├── controllers

│ ├── article_categories.go

│ ├── article_comments.go

│ ├── article_tags.go

│ ├── articles.go

│ ├── categories.go

│ ├── object.go

│ ├── tags.go

│ ├── user.go

│ └── users.go

├── go.mod

├── main.go

├── models

│ ├── article_categories.go

│ ├── article_comments.go

│ ├── article_tags.go

│ ├── articles.go

│ ├── categories.go

│ ├── object.go

│ ├── tags.go

│ ├── user.go

│ └── users.go

├── routers

│ └── router.go

└── tests

└── default_test.go

```

4. 执行 `bee generate docs` 生成 swagger 接口文档

```

.

...

├── swagger

│ ├── swagger.json

│ └── swagger.yml

...

```

5. main.go 文件中加入如下代码

```

import (

"github.com/astaxie/beego/orm"

_ "github.com/go-sql-driver/mysql"

)

func main() {

orm.RegisterDataBase("default", "mysql", "user:pwd@tcp(127.0.0.1:3306)/dotblog?charset=utf8")

}

```

6. 执行 `bee run -gendoc=true -downdoc=true` 启动服务和文档

访问 "http://127.0.0.1:8080/v1/articles" 访问接口

访问 "http://127.0.0.1:8080/swagger" 查看接口文档

![image.png](https://static.studygolang.com/200626/c0cd9298c6db4de70729bc88b0369272.png)

有疑问加站长微信联系(非本文作者))

5c5fbae790ec0313d6ee17e8b3dd9ba1.png

转载地址:https://blog.csdn.net/weixin_33045961/article/details/113259839 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:docker mysql开机自启动_Docker学习4-学会如何让容器开机自启服务【坑】
下一篇:mysql utf8跟utf8mb4_MySQL utf8 和 utf8mb4 的区别

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月11日 12时53分13秒