mysql – Como usar selectedItem de imagem com o nome da imagem em Base de Dados e a imagem em uma pasta no site?


Boas sou um autodidata que estou praticando javafx.
no projecto que estou praticando tenho uma tableView que recebe os dados de uma base de dados MySql e tudo bem tenho uma textFild que recebe o selectItem descricao da base de dados, campo que não está visivel na TableView até aqui tudo bem.
Agora o proximo desafio é ter uma coluna na base de dados com o nome de imagem onde retanho o nome da imagem por ex: car.jpg e ter essa imagem em uma pasta no site e ao selecionar na tableView o respectivo id ter uma image view que me mostre a respectiva imagem.
Obrigado`

MainPane.fxml

MainController.java

package controller;

import library.Books;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;

import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextArea;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.image.ImageView;
import java.net.URL;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import java.util.ResourceBundle;

public class MainController implements Initializable {

@FXML
private TableView<Books> TableView;

@FXML
private TableColumn<Books, Integer> idColumn;

@FXML
private TableColumn<Books, String> titleColumn;

@FXML
private TableColumn<Books, String> authorColumn;

@FXML
private TableColumn<Books, Integer> yearColumn;

@FXML
private TableColumn<Books, Integer> pagesColumn;

@FXML
private TextArea TextF;

@FXML
private ImageView imageV_1;

private Books person;
    
      
  @FXML
  void displaySelected(javafx.scene.input.MouseEvent event) {
      
     person = TableView.getSelectionModel().getSelectedItem();

          String descricao=person.getDescricao();
          
          TextF.setText(descricao);           
      }

@Override
public void initialize(URL location, ResourceBundle resources) {
    showBooks();
}

public Connection getConnection() {
    Connection conn;
    try {
        conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/library", "root", "");
        return conn;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

public ObservableList<Books> getBooksList() {
    ObservableList<Books> booksList = FXCollections.observableArrayList();
    Connection connection = getConnection();
    String query = "SELECT * FROM books ";
    Statement st;
    ResultSet rs;

    try {
        st = connection.createStatement();
        rs = st.executeQuery(query);
        Books books;
        while (rs.next()) {
            books = new Books(rs.getInt("Id"), rs.getString("Title"), rs.getInt("Year"), rs.getString("Author"),
                                rs.getInt("Pages"), rs.getString("Descricao"));
            
            booksList.add(books);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return booksList;
}

// I had to change ArrayList to ObservableList I didn't find another option to
// do this but this works :)
public void showBooks() {
    ObservableList<Books> list = getBooksList();
        
    idColumn.setCellValueFactory(new PropertyValueFactory<Books, Integer>("id"));
    titleColumn.setCellValueFactory(new PropertyValueFactory<Books, String>("title"));
    authorColumn.setCellValueFactory(new PropertyValueFactory<Books, String>("author"));
    yearColumn.setCellValueFactory(new PropertyValueFactory<Books, Integer>("year"));
    pagesColumn.setCellValueFactory(new PropertyValueFactory<Books, Integer>("pages"));
    
        
    TableView.setItems(list);
}

}

Main.java

package application;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

@Override
public void start(Stage stage) throws Exception {
    Parent parent = (Parent) FXMLLoader.load(getClass().getResource("/view/MainPane.fxml"));
    Scene scene = new Scene(parent);
    stage.setScene(scene);
    stage.setTitle("LIVRARIA");
    stage.show();
    
}

public static void main(String() args) {
    launch(args);
}

}
`