gpt4 book ai didi

java - GetRequest 中带有 2 个参数的 SQL 查询

转载 作者:行者123 更新时间:2023-12-01 19:02:39 25 4
gpt4 key购买 nike

我有一个问题。使用 GetRequest 我想要一个 SQL 查询,其中查询 2 个参数。Sql 查询是

从模板中选择*,其中 user_name=user_name AND template_id=template_id

User_name 和 template_id 应取代 GetRequest

我想返回用户名是 user_name 且 template_id = template_id 的所有内容。我的第一次尝试如下所示

public class SelectTemplate {
public void SelectExactTemplate(String user_name, int template_id)
{
try{
Connection conn=this.connect();
Statement stmt=conn.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT * FROM templates WHERE user_name=user_name AND template_id=template_id");
while ( rs.next() )
{

rs.getString(user_name);
rs.getInt(template_id);

}
conn.close();
}
catch (SQLException e)
{
System.out.println(e.getMessage());
}
}
private Connection connect() {
// SQLite connection string
String url = "xxxxxxx";
Connection conn = null;
try {
conn = DriverManager.getConnection(url,"xxxxx","xxxxxxx");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return conn;
}

这是我连接到数据库并开始查询的类。我的获取请求

    @GetMapping("/templates/user_name/template_id")
public Template retrieveUser(@RequestBody Template template)
{
SelectTemplate app=new SelectTemplate();
String user_name=template.getUserName();
int template_id=template.getTemplateId();
app.SelectExactTemplate(user_name, template_id);

return template;
}

还有我的存储库

public interface TemplateRepository extends JpaRepository<Template, Integer>{

}

当我在 POSTMAN 启动 GetRequest 时,收到错误“未找到

有人可以告诉我我做错了什么或者如何更好地解决问题吗?

更新

    public class SelectTemplate {   
@Autowired
private TemplateRepository templateRepository;
public Template SelectExactTemplate(String user_name, int template_id) {
return templateRepository.findByIdAndUserName(template_id, user_name);
}

和存储库

public interface TemplateRepository extends JpaRepository<Template, Integer>{

Template findByIdAndUserName(int template_id, String user_name);

Template findByUserName(String user_name);


}

我还尝试了一次查询用户名。我仍然收到“NOT FOUND”错误。

    @GetMapping("/templates/user_name")
public Template retrieveTemplateByUsername(String user_name)
{
return templateRepository.findByUserName( user_name);
}

更新2

@GetMapping("/templates/{user_name}")
public List<Template> retrieveTemplateByUsername(@PathVariable("user_name") String user_name)
{
return templateRepository.findByUserName(user_name);
}

现在可以了。我必须更改存储库中的某些内容

List<Template> findByUserName(String user_name);

但是如果我想找到由 template_id 和 user_name 选择的 1 个模板,我得到一个空值

@GetMapping("/templates/{user_name}/{template_id}")
public Template retrieveTemplate(@PathVariable("user_name") String user_name,@PathVariable("template_id") int template_id)
{
return templateRepository.findByIdAndUserName(template_id, user_name);

}

更新3问题解决了。查询查找 id,而不是 template_id

非常感谢

最佳答案

既然您已经使用了 JPA,为什么不使用神奇的 templateRepository.findByIdAndUserName 呢?

在这种情况下,您称为“SelectTemplate”的模板服务可能包含以下内容:

@Autowired 
private TemplateRepository templateRepository;

public Template SelectExactTemplate(String user_name, int template_id) {
return templateRepository.findByIdAndUserName(template_id, user_name);
}

关于java - GetRequest 中带有 2 个参数的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59609577/

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