什么是ORM
即Object-Relationl Mapping,它的作用是在關系型數據庫和對象之間作一個映射,這樣,我們在具體的操作數據庫的時候,就不需要再去和復雜的SQL語句打交道,只要像平時操作對象一樣操作它就可以了 。
在mvc里面models層一般是數據庫讀寫邏輯的封裝,數據層的一個映射,我們可以通過orm映射來自動生成models的腳手架.
beego的orm模塊支持三種數據庫,其中就包括了mysql,這里以mysql為例子來實現orm映射.
(1)數據庫庫部分
a1)連接數據庫
a2)創建數據庫imooc
a3)創建表格 user
需要說明的是,如果使用的是8.0的mysql,字段的引號要去掉,5.0左右的版本需要加上.
說一下各個參數的含義:
NOT NULL 該字段不能為空
AUTO_INCREMENT 插入的時候自動增加1
DEFAULT 默認值,如果沒有指定特定值,那么用這個值
PRIMARY KEY 指定主碼
ENGINE=InnoDB 指定表的內省,相對於另一種MyISAM類型,
區別如下原來是MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持。
MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快,但是不提供事務支持,而InnoDB提供事務支持已經外部鍵等高級數據庫功能。
另外,MyISAM類型的二進制數據文件可以在不同操作系統中遷移。也就是可以直接從Windows系統拷貝到linux系統中使用。
以上解釋來自:https://blog.csdn.net/weixin_30263073/article/details/99557842
CHARSET=utf8 字符集使用utf8
a4)插入幾條測試數據,現在已經具備了基本的數據庫功能
(2)beego部分
a1)進入工程目錄
a2)bee generate scaffold user -fields="id:int64,name:string,gender:int,age:int" -driver=mysql -conn="root:123@tcp(127.0.0.1:3306)/imooc"
b1)指令比較復雜,分開講一下,generate是自動生成的意思,scaffold是腳手架的意思
b2)user是表名,命令會生成對應的文件,文件名稱就是user
b3)-fields代表生成的實例的數據結構
b4)-driver是所用數據庫參數
b5)-conn是連接參數"連接角色:密碼@tcp(域名ip:監聽端口)/數據庫名稱"
a3)同意創建models,controller,view的代碼,均選擇yes
a4)最后會問需不需要創建數據庫的遷移和升級,因為暫時用不到,選擇no,這個時候腳手架的功能就完成
(3)啟動goland,查看測試一下生成的代碼
可以注意到生成controller的每個函數上面都有router注解,支持路由注解的controller不需要再去routers層注冊路由,只需要在router文件里面include相應的controller,然后在controller里面需要router函數上面寫上router的注釋,就可以完成注冊路由.
a1)在router里面include UserController
a2)在main.go的beego.run()上面注冊orm數據庫
a3)有了路由之后,還需要添加orm的數據注冊代碼,要注意的是還需要引入mysql的包,如果沒有可以參考go get命令下載go-sql-driver/mysql
a4)啟動應用,然后進入相應的測試路由,檢驗結果.
https://blog.csdn.net/weixin_30263073/article/details/99557842