Titan Framework MongoDB深入理解2

在上一篇文章中,我們提到了Titan框架集成的MongoDB功能內部一些比較重要的頂級接口,但我們平時接觸到比較多的還是Curd和Finder這兩個類,他們是Titan中對MongoDB直接操作的類,下面來對這兩個類的方法進行一些講解。

首先我們需要知道,我們用於存儲的實體類必須對每一個屬性進行註解映射,使用org.titan.framework.facade.annotations.MapperKey這一個類型的註解進行映射,@MapperKey(),參數爲映射該屬性對應的數據庫字段屬性名,比如說我有一個[private String name;],我給他添加一個@MapperKey("Name"),那麼它在Mongo中存儲的Key就爲Name。

第二點需要知道的是對於用於CRUD進行操作的Repository需要添加Spring的Repository提供注入,並且實現StorageDataProcessor.Mongo類。

之後該Respository就能獲取到由該頂級接口提供的Curd對象和Finder對象,進行業務邏輯操作。

    第三點是因爲實體類繼承了DataEntity這個框架提供的BaseEntity,在存儲時會擁有額外的默認屬性,分別是Id,version,CreateTime,logicalDel,它們分別是:框架內唯一主鍵,在某些方法內會使用;版本號標記;創建時間;數據刪除標記。

1.Curd

Curd中有很多的重載方法,沒有重載的方法只有withConverter和load,前者是默認的提供給用戶使用自定義轉換器的方法,而後者是根據表名和唯一Id以及該類類型去讀取這個mongo節點的數據。

add()方法是該類內的插入數據方法,基礎的使用方式參數爲表名以及一個泛型類型,框架會將表名作爲mongo中存儲的表名字,而泛型類型會通過轉換器轉換爲一個mongo節點類型進行存儲。add()擁有一個重載方法,參數爲表名和一個list類型,規定需要指明list中的泛型類型,框架會將該list中所有的對象根據該類型轉化爲mongo節點進行存儲。

delete()方法是該類內的刪除數據方法,基礎使用方式參數爲表名和一個泛型類型,框架會查找表名所對應的表數據,並將泛型類型對象通過轉換器轉換爲mongo節點對象,刪除表數據中和該mongo節點對象相同的數據。delete()有一個重載方法,參數爲表名和唯一主鍵ID,這個唯一主鍵就是我們上邊提到的框架持久化類自動生成的ID,在調用該方法後,框架會查找表名中ID相同的數據進行刪除。

update()方法是該類內的修改方法,參數爲表名,泛型類型(source),泛型類型(target),框架會根據表名查找對應的表數據,轉換source對象爲mongo節點類型,並匹配表中擁有該節點類型特徵的所有數據,更新爲target,做一個說明,如果有數據在mongo中爲{"name":"小張","age":"12"},{"name":"小李","age":"12"},此時傳入source爲{"name":"小張"},則會將小張對應的數據修改爲傳入的target,如果傳入的source爲{"age":"12"},則會將小張,小李兩個數據都修改爲傳入的target。

totalCount()方法是該類內提供的一個查找存在數量的方法,很多業務邏輯有時候不需要查詢完整的數據,而只需要查詢是否存在(驗證)或查詢存在的數量(分頁),此時前者可以使用參數爲表名,泛型類型(condition),該方法會將泛型類型轉換爲mongo節點類型,並查找表中是否存在該數據,返回查找到的條數;而後者可以使用該方法的重載方法,參數爲一個MongoDBQueryCondition類型,該類型是框架內的一個條件類型,我們將在下一篇文章中介紹該類的具體使用方式,傳入該類型後,會返回查找到的所有符合條件的條數。

queryByCondition()方法是該類內的條件查詢方法,傳入的參數是MonDBQueryCondition類型,會返回所有符合條件的數據集合,這裏不做過多介紹,將在下一章展示具體的使用方法。

queryAll()方法是該類內的查詢全表數據的方法,參數爲表名,類類型,這裏類類型指定了該數據對應的映射對象,框架會將返回的數據通過轉換器轉換爲該java對象,若映射失敗則會拋出異常,所以一般會使用存儲的類型去接收這些數據。

2.Finder

Finder類主要是用於查詢數據,若一個Repository只需要完成查詢任務,那麼請使用readOnly()方法初始化一個Finder對象。

withConverter()方法和Curd類中一樣,不再重複贅述。

find()方法是該類內提供的查詢方法,基礎使用參數爲表名,唯一主鍵ID(String),一個類類型,框架會查找與表名相匹配的表,並匹配ID相同的數據,之後通過轉換器轉換爲傳入類類型對應的java對象,若未映射則會拋出相關異常,重載方法參數爲MonDBQueryCondition類型,會返回查找到匹配條件的數據集合,這裏暫時略過。

totalCount()方法和Curd中的方法一樣,不過在該類中只存在參數爲MonDBQueryCondition類型的方法,沒有其他重載方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章