Go數據庫操作:5、xorm包-事件

參考:事件

xorm是支持兩種實現方式的

  1. 在Struct中的特定方法來作爲事件的方法(也就是說通過繼實現相應接口的方式來實現)
  2. 在執行語句的過程中執行事件(也就是說在engine或者session執行的時候進行方法調用實現)。

1、Struct特定方法

這邊的事件說的是在數據庫表映射的結構體中實現xorm對應的接口方法。這邊應該是使用模板設計模式,我們來看一下具體的方法

1、插入到數據庫前、後

在將此struct插入到數據庫前後執行

	//之前
	BeforeInsert()
	//之後
	AfterInsert()

2、更新到數據庫前、後

在將此struct更新到數據庫前後執行

	//之前
	BeforeUpdate()
	//之後
	AfterUpdate()

3、從數據庫刪除前、後

在將此struct更新到數據庫前後執行

	//之前
	BeforeDelete()
	//之後
	AfterDelete()

4、查詢出來,設置到結構體前、後

在將此struct對應的條件數據從數據庫刪除前後執行

在 Get 或 Find 方法中,當數據已經從數據庫查詢出來,而在設置到結構體之前調用,name數據庫字段名稱cell數據庫中的字段值

	//之前
	func BeforeSet(name string, cell xorm.Cell)
	//之後
	func AfterSet(name string, cell xorm.Cell)

2、執行過程中實現

1、臨時執行某個方法之前執行

Before(beforeFunc interface{}),聲明一個Before的方法實現,在engine調用數據庫查詢操作之前調用該Before方法。


	before := func(bean interface{}){
	    fmt.Println("before", bean)
	}
	engine.Before(before).Insert(&obj)
	After(afterFunc interface{})

2、臨時執行某個方法之後執行

After(afterFunc interface{}),聲明一個After的方法實現,在engine調用數據庫查詢操作之前調用該After方法。

	after := func(bean interface{}){
	    fmt.Println("after", bean)
	}
	engine.After(after).Insert(&obj)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章