gpt4 book ai didi

java - MyBatis 3.4.5; @SelectProvider 不替换参数占位符

转载 作者:行者123 更新时间:2023-12-02 09:58:31 24 4
gpt4 key购买 nike

当我尝试使用 MyBatis 创建动态查询时,成功生成了 sql,但 SQL 占位符中的参数没有被替换。

Mapper @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注释。

确保您拥有:导入org.apache.ibatis.annotations.Param;

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

打印 params 映射的内容以验证此声明。

关于java - MyBatis 3.4.5; @SelectProvider 不替换参数占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55804284/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com