Go數據庫操作:2、xorm包-表結構操作

參考:表結構操作

1、獲取數據庫信息

         

1、DBMetas():獲取表結構信息

         這個方法我直接點進去可以看到他其實是返回一個Table對象數組,然後每一個Table就是包含了表的元數據信息,很多屬性其實不知道是幹嘛的,但是有一些還是比較清楚地.

	// DBMetas Retrieve all tables, columns, indexes' informations from database.
	func (engine *Engine) DBMetas() ([]*core.Table, error) {}

在這裏插入圖片描述

2、TableInfo(Bean):獲取對應表結構信息

         這個方法是根據傳入的結構體映射來獲取對應的Table元數據信息的。看一下這個方法的定義:

	// TableInfo get table info according to bean's content
	func (engine *Engine) TableInfo(bean interface{}) *Table {}

2、獲取表信息

1、CreateTables(beans):根據結構體創建表

         他這個方法應該是支持批量的創建的,看這邊傳入的是一個不定變量的參數,看一下源代碼:

	// CreateTables create tabls according bean
	func (engine *Engine) CreateTables(beans ...interface{}) error {}

         

2、IsTableEmpty():判斷表中是否有數據

         這個方法感覺是簡化了一步,正常判斷數據應該是根據count的數量來查詢,這個應該是直接給你計算了。

         

3、IsTableExist():判斷表是否存在

          這個沒得說,sql都能寫出來
         

4、DropTables(beans):批量刪除表

這個方法傳入的也是不定參數,支持批量刪除
         

3、索引

         

1、CreateIndexes(bean):創建索引

         這個方法好像是根據tag中的標籤來創建的,這邊傳入的是一個Bean對象,映射到數據庫表的實體對象

	// CreateIndexes create indexes
	func (engine *Engine) CreateIndexes(bean interface{}) error {}

         

2、CreateUniques(Bean):創建唯一索引

         這個方法和上面那個很類似,這個是創建唯一索引的方法

	// CreateUniques create uniques
	func (session *Session) CreateUniques(bean interface{}) error {}

注意: 這兩個方法好像不會判斷索引是否存在,如果一個索引已經存在的情況,再去創建會報錯,我看源代碼好像是沒有對應的刪除或者判斷的操作。
         

4、同步數據庫結構

         這個不知道作用是咋樣,因爲基本同步數據庫結構是發生在不同的數據庫之間,這邊看的話他是用一個數據庫引擎,同步的是同一個庫的內容,還是說我這邊理解有問題,建議查看原文:同步數據庫結構

5、導入導出SQL腳本

         這個功能感覺還是比較使用的,像你在navicate中的導入導出操作基本也是通過這種io的方式去操作的。
         

1、導入SQL腳本

         這個有兩個方法,一個是從文件中導入,一個是從Reader對象中導入:

	engine.Import(r io.Reader)    //從Reader中導入
	engine.ImportFile(fpath string)   //從文件中導入

         

2、導出SQL腳本

         有兩個方法,一個是導出到文件,一個是導出到writer對象,可能後續會有操作:

	engine.DumpAll(w io.Writer)		//導出到writer對象
	engine.DumpAllFile(fpath string)   //導出到File中
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章