如何在Play Framework 2.6中使用Ebean限制MySQL查询

时间:2018-09-15 21:45:54

标签: mysql datatables ebean playframework-2.6

我正在尝试列出大量数据(来自数据库)。当我使用“ find.all()”时,Play Framework Server崩溃,因为这会占用大量内存。

我试图将all()查询限制为10(每页)。但是我不能。 并且我尝试使用findPagingList(length),但是我不能,因为在新版本的播放器中,Finder中没有findPagingList方法,最接近的是无法设置页面大小的findPagedList

数据库模型类(用户):

    package models;

    import io.ebean.Finder;
    import io.ebean.Model;


    import javax.persistence.*;
    import java.util.List;

@Entity
public class User extends Model{
    @Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    public int id;
    public String name;
    public String tweet;


    public User(int id, String name, String tweet) {
        this.id = id;
        this.name = name;
        this.tweet = tweet;
    }
    public static Finder<Integer, User> find = new Finder<>(User.class);

和我的 controller类(UsersController)

在下面的代码中,我希望将查询限制为从“开始”开始以每页“长度”记录开始打印记录,如服务器端数据表发送的参数

Server-side data-tables Sent parameters

 import io.ebean.*; import models.User; import play.data.Form; import play.data.FormFactory; import play.mvc.Controller; import play.mvc.Result;

import  views.html.users.*; import javax.inject.Inject; import java.util.List;

import static play.libs.Json.toJson;

public class UsersController extends Controller {

    @Inject
    FormFactory formFactory; //    @Transactional
    public Result ListAll(){
        int draw = Integer.parseInt(request().getQueryString("draw"));
        int length = Integer.parseInt(request().getQueryString("length"));
        int start = Integer.parseInt(request().getQueryString("start"));
        List<User> users = User.find.all();

如果有任何不清楚的地方,请问一下,我会尽力提供尽可能多的信息。

0 个答案:

没有答案