簡體   English   中英

MyBatis 3.4.5; @SelectProvider不替換參數占位符

[英]MyBatis 3.4.5; @SelectProvider not replacing parameter placeholders

當我嘗試使用MyBatis創建動態查詢時,會成功生成sql,但不會在SQL占位符中替換參數。

映射器@SelectProvider定義

@SelectProvider(type = ActivitySqlProvider.class, method = "getActivitiesByUserAndType")
@ResultMap("activityResult")
List<Activities> getActivities(@Param("userId") long userId, @Param("type") String type);

ActivitySqlProvider類

public String getActivitiesByUserAndType(final Map<String, Object> params) {

  String COLUMNS = "ACTIVITYID, USERID, TYPE, CREATED, DESCRIPTION";
  String TABLE_NAME = "ACTIVITY";

  boolean hasType = params.containsKey("type");

  final String sql = new SQL() {{
    SELECT(COLUMNS);
    FROM(TABLE_NAME);
    WHERE("USERID = #{userId}");

    if (hasType) {
      WHERE("TYPE = #{type}");
    }

  }}.toString();

  System.out.println(sql);
  return sql;
}

SQL字符串正確打印,我可以看到占位符。 不知道我在想什么。

一個盲目的猜測:您使用了錯誤的@Param批注。

確保您具有: import org.apache.ibatis.annotations.Param;

而不是: import org.springframework.data.repository.query.Param;

打印params映射的內容以驗證此聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM