使用MyBatis将动态列名与where子句中的值进行比较

时间:2018-10-30 12:56:05

标签: java spring orm mybatis ibatis

是否可以使用类似的东西

SEARCH_QUERY = "select * from info where #{columnName}=\"#{columnValue}\"";

使用MyBatis 3吗?

columnName必须是动态的。

谢谢!

1 个答案:

答案 0 :(得分:1)

当您使用#columnValue之类的语法时,mybatis将创建准备好的语句并为您绑定变量。这有几个后果:

  1. 您不需要在#columnValue周围加上引号
  2. 您不需要转义通过的值
  3. #仅在允许JDBC查询中的参数的情况下使用。所以你不能用它来生成动态列名

如果要生成动态查询,请使用$columnName。完整的查询如下所示:

select * from info where ${columnName}=#{columnValue}