接着上篇來寫《和lock一塊兒學beego 博客系統開發爲例(一)》mysql
這篇主要完成如下事項:git
1.beego框架,項目的創建github
2. 表數據的設計sql
3. 模型的創建數據庫
(這篇在公司裏寫的,用的是win機器)api
1、beego項目的創建瀏覽器
beego自帶的工具bee是一個很是好的工具,能夠建立項目及API接口等。因此在創建項目以前,務必先下載bee工具,bash
在命令符下:框架
go get github.com/beego/bee
安裝好後,能夠在系統環境變量加添加bee的路徑,方便後續直接bee 命令執行工具
以win爲例:這個目錄會有bee.exe
C:\GOPATH\bin
如今能夠直接在cmd下,bee命令測試了。
咱們能夠切換到C:\GOPATH\src目錄下,用bee new blog命令來建立項目
bee new blog
會自動生成以下文件:
這樣beego項目建立完成了。
在這裏介紹一下bee的命令經常使用參數:
new :建立新項目
run :運行項目,默認是以8080端口運行,能夠在瀏覽器運行localhost:8080,出會提示頁面
api :是用來建立api項目的,生成的目錄略有不一樣
2、表數據的設計
既然是簡單的博客,那麼表也是很經常使用的,以下
article:博客文章表
comment:博客評論表
user:用戶表
user_profile:用戶詳細表
album:相冊表
這幾張表,足夠玩轉一個blog了~由於是簡單blog嗎~
在這裏說明一下,若是在項目裏建立model話,能夠自動生成表,這裏先不做說明,直接給SQL語句,在庫中直接運行,庫名稱:blog
CREATE TABLE `album` ( `id` int(10) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章標題', `picture` varchar(255) DEFAULT '' COMMENT 'Picture', `keywords` varchar(2550) DEFAULT '' COMMENT '關鍵詞', `summary` varchar(255) DEFAULT '', `created` int(10) DEFAULT '0' COMMENT '發佈時間', `viewnum` int(10) DEFAULT '0' COMMENT '閱讀次數', `status` tinyint(1) DEFAULT '1' COMMENT '狀態: 0草稿,1已發佈', PRIMARY KEY (`id`), KEY `INDEX_TCVS` (`title`,`created`,`viewnum`,`status`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='相冊'; CREATE TABLE `article` ( `id` int(10) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL DEFAULT '' COMMENT '文章標題', `uri` varchar(255) DEFAULT '' COMMENT 'URL', `keywords` varchar(2550) DEFAULT '' COMMENT '關鍵詞', `summary` varchar(255) DEFAULT '', `content` longtext NOT NULL COMMENT '正文', `author` varchar(20) DEFAULT '' COMMENT '做者', `created` int(10) DEFAULT '0' COMMENT '發佈時間', `viewnum` int(10) DEFAULT '0' COMMENT '閱讀次數', `status` tinyint(1) DEFAULT '1' COMMENT '狀態: 0草稿,1已發佈', PRIMARY KEY (`id`), KEY `INDEX_TCVS` (`title`,`created`,`viewnum`,`status`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章'; CREATE TABLE `user` ( `id` int(10) NOT NULL AUTO_INCREMENT, `phone` varchar(20) NOT NULL DEFAULT '' COMMENT '用戶名', `password` varchar(255) NOT NULL DEFAULT '' COMMENT '密碼', `created` int(10) DEFAULT NULL COMMENT '註冊時間', `changed` int(10) DEFAULT NULL COMMENT '編輯時間', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '狀態: 0屏蔽,1正常', `user_profile_id` int(10) DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `user_profile_id` FOREIGN KEY (`id`) REFERENCES `user_profile` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶'; CREATE TABLE `user_profile` ( `id` int(10) NOT NULL AUTO_INCREMENT, `realname` varchar(15) DEFAULT NULL, `sex` tinyint(1) DEFAULT '1' COMMENT '1boy,0girl', `birth` varchar(20) NOT NULL DEFAULT '' COMMENT '生日', `email` varchar(20) DEFAULT NULL, `phone` varchar(11) DEFAULT NULL, `address` varchar(255) NOT NULL DEFAULT '' COMMENT '地址', `hobby` varchar(255) NOT NULL DEFAULT '' COMMENT '愛好', `intro` text COMMENT '介紹', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用戶詳情'; CREATE TABLE `comment` ( `id` int(10) NOT NULL AUTO_INCREMENT, `article_id` int(10) DEFAULT NULL, `nickname` varchar(15) DEFAULT NULL, `uri` varchar(255) DEFAULT NULL, `content` text, `created` int(10) DEFAULT '0', `status` tinyint(1) DEFAULT '1' COMMENT '0屏蔽,1正常', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='blog評論';
到此,表的設計已經所有完成。能夠根據本身想法,多創建幾個表,如標籤表,文章分類表,相冊分類表
3、Beego中表模型創建
在go語言中,有一個很是強大的struct,能夠自定義和引用;在beego中,咱們的表模型其實就是用struct屬性。
先以article表爲例:
struct裏定義的,就是article表中的字段,以下:
type Article struct { Id int Title string Uri string Keywords string Summary string Content string Author string Created int64 Viewnum int Status int }
接下來,我詳細介紹一下。
在models文件夾下創建一個文件:article.go,文件內容以下:
package models import ( "time" "github.com/astaxie/beego/orm" _ "github.com/go-sql-driver/mysql" ) type Article struct { Id int Title string Uri string Keywords string Summary string Content string Author string Created int64 Viewnum int Status int } func (this *Article) TableName() string { return "article" } func init() { orm.RegisterModel(new(Article)) }
咱們再看一下user模型:在models創建文件,user.go
這裏創建了關聯的表,一對一關係,在beego中表的命名是以駝峯形式命名的,如UserProfile,在數據庫實際上是 user_profile形式存在,會自動以大寫字母分割加下劃線生成表名。
在註冊多表模型的時候,orm.RegisterModel(new(User), new(UserProfile)) 來初始化。
package models import ( "fmt" "github.com/astaxie/beego/orm" "github.com/gogather/com" ) type User struct { Id int Phone string UserProfile *UserProfile `orm:"rel(one)"` Password string Status int Created int64 Changed int64 } type UserProfile struct { Id int Realname string Sex int Birth string Email string Phone string Address string Hobby string Intro string User *User `orm:"reverse(one)"` } func (this *User) TableName() string { return "user" } func init() { orm.RegisterModel(new(User), new(UserProfile)) // }
其它表的模型創建和上面的差很少,本身試着創建一下;若是中間報錯,多是一些包或變量未使用,編譯的時候會出錯,這沒事,本身試着會註釋。在保存的時候,bee run會自動檢測出錯誤,你們要學會使用。
最後截圖看看:
好的,今天先介紹到這裏,下篇主要完成如下工做:
1.模型裏如何建立方法
2. 數據庫的引用
3. beego的配置文件使用