如何提高JavaFx MySQL应用程序的性能
在我的JavaFx应用程序中,当单击一个按钮并在表中显示列表时,我正在加载一个ObservableList 控制器代码:如何提高JavaFx MySQL应用程序的性能,mysql,performance,javafx,load-time,Mysql,Performance,Javafx,Load Time,在我的JavaFx应用程序中,当单击一个按钮并在表中显示列表时,我正在加载一个ObservableList 控制器代码: @FXML private void initialize() throws SQLException, ParseException, ClassNotFoundException { searchChoice.setItems(criteriaList); searchChoice.getSelectionModel().selectFirst(
@FXML
private void initialize() throws SQLException, ParseException, ClassNotFoundException {
searchChoice.setItems(criteriaList);
searchChoice.getSelectionModel().selectFirst();
productIdColumn.setCellValueFactory(cellData -> cellData.getValue().productIdProperty());
unitColumn.setCellValueFactory(cellData -> cellData.getValue().unitProperty());
productTitleColumn.setCellValueFactory(cellData -> cellData.getValue().titleProperty());
productTypeColumn.setCellValueFactory(cellData -> cellData.getValue().typeProperty());
productUnitPriceColumn.setCellValueFactory(cellData -> Bindings.format("%.2f", cellData.getValue().unitPriceProperty().asObject()));
productQuantityColumn.setCellValueFactory(cellData -> cellData.getValue().quantityProperty().asObject());
productStatusColumn.setCellValueFactory(cellData -> cellData.getValue().productStatusProperty());
descriptionColumn.setCellValueFactory(cellData -> cellData.getValue().descriptionProperty());
reorderPointColumn.setCellValueFactory(cellData -> cellData.getValue().reOrderPointProperty().asObject());
surplusPointColumn.setCellValueFactory(cellData -> cellData.getValue().surplusPointProperty().asObject());
productIdColumn.setSortType(TableColumn.SortType.DESCENDING);
productTable.getSortOrder().add(productIdColumn);
productTable.setRowFactory(tv -> new TableRow<Product>() {
@Override
public void updateItem(Product item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setStyle("");
} else if (item.getQuantity() < item.getReOrderPoint()) {
setStyle("-fx-background-color: tomato;");
} else if (item.getQuantity() > item.getSurplusPoint()) {
setStyle("-fx-background-color: darkorange;");
} else {
setStyle("-fx-background-color: skyblue;");
}
}
});
try {
ObservableList<Product> productData = ProductDAO.searchProducts();
populateProducts(productData);
String[] expireDate = new String[productData.size()];
String[] id = new String[productData.size()];
String[] existingStatus = new String[productData.size()];
for (int i = 0; i < productData.size(); i++) {
expireDate[i] = productData.get(i).getExpireDate();
id[i] = productData.get(i).getProductId();
existingStatus[i] = productData.get(i).getProductStatus();
DateFormat format = new SimpleDateFormat(app.values.getProperty("DATE_FORMAT_PATTERN"), Locale.ENGLISH);
Date expireDateString = format.parse(expireDate[i]);
Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());
Date today = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
if (expireDateString.before(today) && !existingStatus[i].equals(app.values.getProperty("STATUS_TYPE2"))) {
ProductDAO.updateProductStatus(id[i], app.values.getProperty("STATUS_TYPE3"));
}
if (expireDateString.after(today) && !existingStatus[i].equals(app.values.getProperty("STATUS_TYPE2"))) {
ProductDAO.updateProductStatus(id[i], app.values.getProperty("STATUS_TYPE1"));
}
}
ObservableList<Product> productDataRefreshed = ProductDAO.searchProducts();
populateProducts(productDataRefreshed);
ObservableList<Product> productCodesData = ProductDAO.getProductCodes();
ObservableList<Product> productTitlesData = ProductDAO.getProductTitles();
ObservableList<Product> productTypesData = ProductDAO.getProductTypes();
ObservableList<Product> productStatusData = ProductDAO.getProductStatus();
String possibleProducts1[] = new String[productCodesData.size()];
for (int k = 0; k < productCodesData.size(); k++) {
possibleProducts1[k] = productCodesData.get(k).getProductId();
}
String possibleProducts2[] = new String[productTitlesData.size()];
for (int k = 0; k < productTitlesData.size(); k++) {
possibleProducts2[k] = productTitlesData.get(k).getTitle();
}
String possibleProducts3[] = new String[productTypesData.size()];
for (int k = 0; k < productTypesData.size(); k++) {
possibleProducts3[k] = productTypesData.get(k).getType();
}
String possibleProducts4[] = new String[productStatusData.size()];
for (int k = 0; k < productStatusData.size(); k++) {
possibleProducts4[k] = productStatusData.get(k).getProductStatus();
}
TextFields.bindAutoCompletion(searchField, possibleProducts1);
TextFields.bindAutoCompletion(searchField, possibleProducts2);
TextFields.bindAutoCompletion(searchField, possibleProducts3);
TextFields.bindAutoCompletion(searchField, possibleProducts4);
} catch (SQLException e) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle(app.values.getProperty("ERROR_TITLE"));
alert.setHeaderText(app.values.getProperty("FAILURE_MESSAGE"));
alert.setHeaderText(app.values.getProperty("ERROR_GETTING_INFORMATION_FROM_DATABASE_MESSAGE"));
alert.showAndWait();
throw e;
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
@FXML
private void initialize()抛出SQLException、ParseException、ClassNotFoundException{
searchChoice.setItems(标准列表);
searchChoice.getSelectionModel().selectFirst();
productIdColumn.setCellValueFactory(cellData->cellData.getValue().productIdProperty());
unitColumn.setCellValueFactory(cellData->cellData.getValue().unitProperty());
productTitleColumn.setCellValueFactory(cellData->cellData.getValue().titleProperty());
productTypeColumn.setCellValueFactory(cellData->cellData.getValue().typeProperty());
productUnitPriceColumn.setCellValueFactory(cellData->Bindings.format(“%.2f”,cellData.getValue().unitPriceProperty().asObject());
productQuantityColumn.setCellValueFactory(cellData->cellData.getValue().quantityProperty().asObject());
productStatusColumn.setCellValueFactory(cellData->cellData.getValue().productStatusProperty());
descriptionColumn.setCellValueFactory(cellData->cellData.getValue().descriptionProperty());
reorderPointColumn.setCellValueFactory(cellData->cellData.getValue().reOrderPointProperty().asObject());
surplusPointColumn.setCellValueFactory(cellData->cellData.getValue().surplusPointProperty().asObject());
productIdColumn.setSortType(TableColumn.SortType.DESCENDING);
productTable.getSortOrder().add(productIdColumn);
productTable.setRowFactory(电视->新建表格行(){
@凌驾
public void updateItem(产品项,布尔值为空){
super.updateItem(项,空);
如果(项==null){
设置样式(“”);
}else if(item.getQuantity()item.get盈余点()){
setStyle(“-fx背景色:darkorange;”);
}否则{
设置样式(“-fx背景色:天蓝色;”);
}
}
});
试一试{
ObservableList productData=ProductDAO.searchProducts();
populateProducts(productData);
String[]expireDate=新字符串[productData.size()];
String[]id=新字符串[productData.size()];
String[]existingStatus=新字符串[productData.size()];
对于(int i=0;i
服务mysql查询:
public static ObservableList<Product> searchProducts() throws SQLException, ClassNotFoundException {
String selectStmt = "SELECT * FROM product";
ResultSet rsPrdcts = DbUtil.dbExecuteQuery(selectStmt);
ObservableList<Product> productList = getProductList(rsPrdcts);
return productList;
}
public static observeList searchProducts()抛出SQLException、ClassNotFoundException{
String selectStmt=“选择*来自产品”;
ResultSet rsPrdcts=DbUtil.dbExecuteQuery(selectStmt);
ObservableList productList=getProductList(rsPrdcts);
返回产品列表;
}
这里的问题是,当有更多
SELECT count(*) FROM product
int numItems = 30;
int offset = idx - (idx % numItems)
SELECT * FROM product LIMIT offset, numItems