Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用spring boot(服务器端)和Angular(前端)将100K数据加载到表中_Java_Angular_Spring_Spring Boot_Spring Mvc - Fatal编程技术网

Java 如何使用spring boot(服务器端)和Angular(前端)将100K数据加载到表中

Java 如何使用spring boot(服务器端)和Angular(前端)将100K数据加载到表中,java,angular,spring,spring-boot,spring-mvc,Java,Angular,Spring,Spring Boot,Spring Mvc,我无法在不延迟客户端的情况下从后端到后端加载数据。。我使用弹簧靴作为后端,角7作为前端。。问题是,当我从前端提交请求以从后端加载所有数据时,加载数据需要55秒。等待太久了。。我想知道有没有办法加快这个过程 我已经完成了从后端到前端加载数据的所有编码。。从后端到前端加载数据时没有任何错误或问题。。但问题是加载时间太长,我想加快这个过程 这是application.properties文件 spring.datasource.url = jdbc:mysql://localhost:3306/sir

我无法在不延迟客户端的情况下从后端到后端加载数据。。我使用弹簧靴作为后端,角7作为前端。。问题是,当我从前端提交请求以从后端加载所有数据时,加载数据需要55秒。等待太久了。。我想知道有没有办法加快这个过程

我已经完成了从后端到前端加载数据的所有编码。。从后端到前端加载数据时没有任何错误或问题。。但问题是加载时间太长,我想加快这个过程

这是application.properties文件

spring.datasource.url = jdbc:mysql://localhost:3306/siri?createDatabaseIfNotExist=true
spring.datasource.username = root
spring.datasource.password =sanu
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL57Dialect
spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=215MB
这是我的实体

@Entity
@Table(name = "Parts")
public class Parts implements SuperEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "map")
    @TableGenerator(name = "map", table = "Id_Gen", pkColumnName = 
   "Tables_Names", valueColumnName = "Gen_keys", pkColumnValue = 
   "PartsDTO", initialValue = 1, allocationSize = 1)
    private int id;
    private String partName;
    private String partNumber;
    private String barCode;
    private String brand;
    private String partType;
    private String country;
    private String vehicleModel;
    private String packSize;
    private String location;
    private String rackNo;
    private String roq;
    private String rql;
    @Column(name = "imageUrl1")
    private String imageUrl1;
    @Column(name = "imageUrl2")
    private String imageUrl2;
    @Column(name = "imageUrl3")
    private String imageUrl3;
    @Column(name = "imageUrl4")
    private String imageUrl4;
    private Blob image;
    private Blob image1;
    private Blob image2;
    private Blob image3;
    private String warranty;
    private Date adedDate;
    @Enumerated(value = EnumType.STRING)
    private Catogary catogary;
    @ManyToMany(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
    @JoinTable(name = "Parts_FuelType",
            joinColumns = {@JoinColumn(name = "part_ID", 
    referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "fuel_Type", 
    referencedColumnName = "id")})
    private List<FuelType> fuelTypes = new ArrayList<>();
    @OneToMany(mappedBy = "parts", cascade = CascadeType.DETACH, fetch = 
    FetchType.LAZY)
    private List<OrderDetails> orderDetail = new ArrayList<>();
    @OneToMany(mappedBy = "parts", cascade = CascadeType.DETACH, fetch = 
    FetchType.LAZY)
    @OrderBy("date DESC")
    private List<Bulk> bulks = new ArrayList<>();
}
@实体
@表(name=“Parts”)
公共类部件实现超级实体{
@身份证
@GeneratedValue(策略=GenerationType.TABLE,generator=“map”)
@TableGenerator(name=“map”,table=“Id\u Gen”,pkColumnName=
“表名称”,valueColumnName=“Gen\u keys”,pkColumnValue=
“PartsDTO”,initialValue=1,allocationSize=1)
私有int-id;
私有字符串部分名;
私有字符串部件号;
私有字符串条形码;
自有品牌;
私有字符串部分类型;
私人国家;
私有字符串车辆模型;
私有字符串packSize;
私有字符串位置;
私有字符串编号;
私有字符串roq;
私有字符串rql;
@列(name=“imageUrl1”)
私有字符串imageUrl1;
@列(name=“imageUrl2”)
私有字符串imageUrl2;
@列(name=“imageUrl3”)
私有字符串imageUrl3;
@列(name=“imageUrl4”)
私有字符串imageUrl4;
私有Blob图像;
私有Blob图像1;
私有Blob图像2;
私有Blob图像3;
私人字符串保修;
私人约会;
@已枚举(值=EnumType.STRING)
私人茶室茶室;
@ManyToMany(cascade=CascadeType.DETACH,fetch=FetchType.LAZY)
@JoinTable(name=“Parts\u FuelType”,
joinColumns={@JoinColumn(name=“part_ID”,
referencedColumnName=“id”)},
inverseJoinColumns={@JoinColumn(name=“燃料类型”,
referencedColumnName=“id”)})
private List fuelTypes=new ArrayList();
@OneToMany(mappedBy=“parts”,cascade=CascadeType.DETACH,fetch=
FetchType.LAZY)
private List orderDetail=new ArrayList();
@OneToMany(mappedBy=“parts”,cascade=CascadeType.DETACH,fetch=
FetchType.LAZY)
@订购人(“日期描述”)
私有列表bulks=newarraylist();
}
这是Crud回购

public interface PartsRepo extends CrudRepository<Parts, Integer> {
    Parts findPartsByBarCode(String barCode) throws Exception;
    List<Parts> findPartsByPartNameContaining(String partName) throws Exception;
    List<Parts> findPartsByPartNumberContaining(String partNumber) throws Exception;
    Long countByBarCodeAndFuelTypes(String barCode, FuelType t) throws Exception;
    Parts findPartsByPartNumber(String partNumber) throws Exception;
}
公共接口部件EPO扩展了CrudRepository{
Parts findPartsByBarCode(字符串条形码)引发异常;
List findPartsByPartNameContaining(字符串partName)引发异常;
List findPartsByPartNumberContaining(字符串partNumber)引发异常;
Long countByBarCodeAndFuelTypes(字符串条形码,FuelType t)抛出异常;
Parts findPartsByPartNumber(字符串partNumber)引发异常;
}
这是控制器

@GetMapping(value = "/getAll")
public List<PartsDTO> getAllParts() {
    try {
        return partsService.getAllParts();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}
@GetMapping(value=“/getAll”)
公共列表getAllParts(){
试一试{
返回partsService.getAllParts();
}捕获(例外e){
e、 printStackTrace();
返回null;
}
}
从这一点来看,将所有数据加载到前端html表几乎需要1分钟。我想知道快速将所有数据(100K)加载到html表的最快方法是什么


如果需要加载100K条记录,您确实应该添加服务器端分页

Spring Boot允许您创建开箱即用的分页

您的
存储库
应该扩展
分页和排序存储库

public interface PartsRepo extends PagingAndSortingRepository<Parts, Integer> {
    Page<Parts> getAllPartsPage(Pageable pageable, //whatever @Param you need here);
}
签出
Pageable
界面


另外,这里还有一个关于spring boot分页的好方法。

您必须为数据添加分页,不应该在一个请求中加载所有数据当您有大量数据要显示时,您需要使用分页。您已经做到了,但这是客户端分页,这意味着angular需要处理所有记录并对其进行分页,这非常慢。您应该在服务器端进行分页。然后请向我解释如何在spring boot中进行服务器端分页
@GetMapping(value = "/getAll")
public Page<PartsDTO> getAllPartsPageable(@SortDefault("id (or whatever field you need)") Pageable pageable) {
    try {
        return partsService.getAllPartsPage();
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}