gpt4 book ai didi

database - 如何在两个字段中进行搜索查询,一个是字符串上的 int

转载 作者:搜寻专家 更新时间:2023-10-30 23:11:07 26 4
gpt4 key购买 nike

我不知道这是否可行所以我想我会在这里发帖

是否可以有一个输入框,例如,如果用户输入一个字符串或一个整数,它将搜索数据库的两列,即 i.d. (int)和用户名(string),我怎么能把它传递给从 View 中搜索,因为我在 getter 等中将类型设置为 int 或 string 但是如果我想搜索两者我怎么能这样做类型 ?

这就是我目前在数据库中搜索 int 的方式

 <h:inputText id="search" value="#{userdetailsController.search}"  />   
&nbsp;


<p:commandButton value="Search" action="#{userdetailsController.submit}" update="group" />

用户详细信息 Controller

private String search;

private List<Userdetails> item; // No need for DataModel here.

public List<Userdetails> getItem() {
return item;
}

public String submit() {
item = ejbFacade.searchByString(search);
return ""; //change this !, testing only
}

public String getSearch() {
return search;
}

public void setSearch(String search) {
this.search = search;
}

在用户详细信息中

 @NamedQuery(name = "Userdetails.searchByUsername", query = "SELECT u FROM Userdetails u WHERE u.username like :username")

谢谢大家

最佳答案

只需将属性保留为 String 并在操作方法中检查它是否表示数字。

例如

public void submit() {
if (search.matches("[0-9]+")) {
item = ejbFacade.searchByInt(Integer.parseInt(search));
} else {
item = ejbFacade.searchByString(search);
}
}

您也可以在服务方法本身中处理它,这取决于您希望服务的可重用程度。服务 (EJB) 也可以被 JSF 以外的其他前端使用,例如 JAX-RS (RESTFul)、普通 Servlets/过滤器等。

public void submit() {
item = ejbFacade.search(search);
}

public List<Userdetail> search(String query) {
if (query.matches("[0-9]+")) {
return searchByInt(Integer.parseInt(query));
} else {
return searchByString(query);
}
}

关于database - 如何在两个字段中进行搜索查询,一个是字符串上的 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20144565/

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