gpt4 book ai didi

java - 使用 JDBCTemplate 时,SQL `IN` 在 Spring Boot 中不起作用

转载 作者:行者123 更新时间:2023-12-01 17:16:04 25 4
gpt4 key购买 nike

我有 JDBC 模板对象,并且尝试对数据库运行查询以进行删除,但无法运行此查询。我该怎么做?

jdbcTemplate.update("delete from `message` where `id` IN (:ids) and `from` = ?;", new Integer[] {1, 2}, 1);

--- 添加

public static final Map<String, String> SQL = new HashMap<String, String>() {{
put("removeMessages", "delete from `message` where `id` IN ( :ids ) and `@` = :userId ;");
}};


public int removeMessages(@NonNull Integer[] ids, @NonNull Integer userId, boolean asSender) {
MapSqlParameterSource parameters = new MapSqlParameterSource().addValue("ids", Arrays.asList(ids)).addValue("userId", userId);
String sql = SQL.get("removeMessages").replace("@", asSender ? "from" : "to");
return getInstance(MainSQL.class).query(sql, parameters);
}

最佳答案

您需要使用 NamedParameterJdbcTemplate 作为命名参数。尝试使用此代码:

List<Integer> ids= Arrays.asList(1,2);
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", ids);
parameters.addValue("from",1);
namedParameterJdbcTemplate.update("delete from `message` where `id` IN (:ids) and `from` = :from;",parameters);

关于java - 使用 JDBCTemplate 时,SQL `IN` 在 Spring Boot 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61384829/

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