2012-01-12 65 views
1

列屬性的映射關係,我需要做的MyBatis的一些動態SQL映射,爲了讓這對每列做類似如下:獲取的MyBatis

switch (filter.FilterType) 
     { 
      case FilterType.BeginsWith: 
       operatorStr = "UPPER({0}) LIKE '{1}%' "; 
       value = filter.Value.ToUpper(); 
       break; 
      case FilterType.Contains: 
       operatorStr = "UPPER({0}) LIKE '%{1}%' "; 
       value = filter.Value.ToUpper(); 
       break; 
      case FilterType.GreaterThan: 
       operatorStr = " {0} > {1} "; 
       break; 
      case FilterType.GreaterThanOrEqual: 
       operatorStr = " {0} >= {1} "; 
       break; 
      case FilterType.LessThan: 
       operatorStr = " {0} < {1} "; 
       break; 
      case FilterType.LessThanOrEqual: 
       operatorStr = " {0} <= {1} "; 
       break; 
     } 

我之所以需要有一個過濾器是這樣的,我有一個網頁,它顯示一個表格的數據爲網格,每列可搜索/排序。我不想爲每列編寫if-else子句,因此試圖查看Mybatis中的列屬性映射是否有助於此工作。

我想有一種方法讓Mybatis知道哪一列我希望它指向在過濾器中有效。我知道我可以使用簡單的動態方式實現這一點,通過動態地在我自己的自定義代碼中找出我要過濾的實際列。但我不想在編程源代碼中混合實際的表列名稱。我認爲這樣做更明智的做法是將類屬性名稱傳遞給Mybatis的API,然後讓它找出映射到該類的屬性名稱的實際列傳入。

任何人都有想法如何做到這一點? Mybatis中是否有API提供此列屬性映射關係函數,例如。它可以像一個字典,我傳遞的屬性名稱然後它給我的實際列名稱?

在此先感謝!

回答

0

交換機不支持的MyBatis,所以你可以用它來實現這一

<choose> 
      <when test=""></when> 
      <when test=""></when> 
      <when test=""></when> 
      <when test=""></when> 
      <otherwise></otherwise> 
     </choose> 

u能通濾波器類型作爲參數,然後驗證它。