Spring Data JPA -我如何通过id获得特定行的列表?



我正试图通过id从表中获得特定的行,但我在下面没有工作。

@Query(value = "SELECT * FROM row r where r.row_id = :row_ids", nativeQuery = true)
List<Object> temp(@Param("albumsIds") String row_ids);

row_ids是用"或"分隔的所有id。-id:1 or id:2 or id:3

我只是想做select * from row r where r.row_id = id:1, or r.row_id = id:2, or r.row_id = id:3

有谁知道问题是什么,或者有更好的方法吗?

直接使用:

List<Object> findByIdIn(Collection<Integer> ids);

将自动从查询方法名称本身设置派生查询。

或者,如果您想以编程方式提供查询,那么查询应该是:
@Query(value = "SELECT * FROM row R WHERE R.row_id IN :ids", nativeQuery = true)
List<Object> temp(@Param("ids") Collection<Integer> ids);

MySQL允许在查询中使用IN关键字,这让我们为ID提供一个CSV来解析并返回ID在CSV中的任何记录。这显然可以用于任何数据,出于这个目的,我们将使用id作为示例。

使用上面的方法可以显著降低SQL注入的风险,因为Java Collection类型转换不应该允许用户提供任何可能导致问题的值。

最新更新