2012-01-12 71 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能通滤波器类型作为参数,然后验证它。