gpt4 book ai didi

java - Play Framework 数据库搜索

转载 作者:行者123 更新时间:2023-11-30 06:25:59 26 4
gpt4 key购买 nike

我的项目中有一个模型类“旅程”,它有多种删除、创建和列出所有旅程的方法。我正在使用 heroku 和 postgresql 数据库。我需要编写一种方法,将所有具有与指定地址相似地址的旅程返回。我知道查询结构通常类似于 SELECT address FROM Journey WHERE address ~~ arguement 但我不知道在 play 框架中存在哪些函数可以执行此操作。

*public static void search(String address){
//query
//return matching journey results
}*

最佳答案

你需要使用Model的Finder作为例子:

package models;

import play.db.ebean.Model;

import javax.persistence.*;

@Entity
public class Journey extends Model {

@Id
public Integer id;

public static Finder<Integer, Journey> find
= new Model.Finder<>(Integer.class, Journey.class);

// other fields
public String address;
public String country;

}

因此您可以轻松选择记录:

List<Journey> allJourneys = Journey.find.all();
List<Journey> searchedJourneys = Journey.find.where().like("address", "%foo%").findList();
Journey firstJourney = Journey.find.byId(123);

在您的基本案例中,您可以将其添加到您的模型中:

public static List<Journey> searchByAddress(String address){
return find.where().like("address", "%"+address+"%").findList();
}

等等。它返回具有关系的整个对象,因此在大数据集中它可能太重了,您可以甚至应该使用更优化的查询和 Finder 的链式方法,如 select()fetch() 等指出您目前需要哪些数据。

Ebean's API还有其他可能性,无论如何您需要声明哪种方法最适合您。

顺便说一句,检查现有示例应用程序是值得的,例如 计算机的数据库 以熟悉此 ORM。

编辑

对于不区分大小写的搜索,还有其他表达式,即 ilike(而不是 like)、istartsWithiendsWithieqicontainsiexampleLike。他们在开头没有 i 的情况下执行相同的操作。

您可以预览它们 in the API

关于java - Play Framework 数据库搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14963056/

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