MyBatis:使用动态查询比较String值

我正在使用MyBatis映射一些我需要比较String参数( myString )的查询。

我的Mapper 界面是:

public Map findSomething(@Param("myString") String myString);

我的XML如下:

  SELECT column1 as key, column2 as value FROM my_table    column3 = 1   myColumn = 2   myColumn = 3    ORDER BY value;  

当我执行此语句时,抛出以下错误:

 ERROR [stderr] Caused by: org.apache.ibatis.exceptions.PersistenceException: ERROR [stderr] ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'myString' in 'class java.lang.String' 

用这种方式进行String比较,闻起来很糟糕。 不幸的是,这是数据库建模的方式。

MyBatis版本: 3.2.2

用MyBatis 3.2.8测试

  

注意测试周围的单引号和de常量值周围的双引号。 诀窍是使用equals,你可以看到。

当然,我必须经历一个复杂的方法。

更改了映射器方法签名:

 public Map findSomething(@Param("myPojo") MyPojo myPojo); 

XML必须是:

  

只是不要忘记,作为一个POJO,参数类必须有它的各自的getter和setter。

假设Mybatis 3.2.2及更高版本,请将您的xml修改为以下内容,看看它是否有帮助:

  

应该提到另一个解决方案:

    column3 = 1;   myColumn = 2;   myColumn = 3;