获取MyBatis中的列属性映射关系

时间:2012-01-12 07:00:14

标签: mybatis

我需要在MyBatis中做一些动态的sql映射,以便让它为每一列做类似的事情:

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来提供此列属性映射关系函数,例如。它可以像字典一样,我在属性名称中传递,然后它给我实际的列名?

提前致谢!

1 个答案:

答案 0 :(得分:0)

mybatis不支持切换,因此您可以使用它来实现此目的

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

你可以将过滤器类型作为参数传递,然后验证它。