Spring JPA - 准备好的语句查询?

Ari*_*ane 6 mysql sql spring spring-data-jpa spring-boot

我正在构建一个 Spring REST 服务器应用程序,并且正在执行一些本机查询以从数据库中检索数据。从学校的教学来看,他们建议所有查询都准备好语句,以阻止用户在输入框中输入有害的SQL。

我尝试做一些研究,但还没有找到具体的答案。Spring默认使用准备好的语句吗?这是我想要清理的查询之一的片段:


   @Query(value = "DELETE FROM userMeds WHERE username = ?1 AND drug_id = ?2", nativeQuery = true)
    void deleteByIdentity(String username, int drug_id);
Run Code Online (Sandbox Code Playgroud)

如果这不使用准备好的语句,我怎样才能避免发生任何不好的事情?

先感谢您

小智 5

准备好的语句有助于避免sql注入。

就 spring data jpa 而言,它默认接受参数化的 xml、@NamedQuery 或 @Query,因此无需担心。

  • 那么它已经参数化了吗?例如,如果用户输入恶意 SQL,它不会影响数据库吗? (2认同)