java输出到TableView
有必要在tableView中从MySQL中得出结论。创建实体:
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
//
@Entity
@Table(name = "users2") //создание бд и таблицы юзеров
public class User
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String login;
@Column(nullable = false, length = 16)
private String password;
@Column(nullable = false, length = 50)
private String surname;
@Column(nullable = false, length = 50)
private String name;
//equals, hashcode, toString
}
基于实体,我制作了一个控制器:
public class Controller implements Initializable
{
private Stage stage;
public void setStage(Stage stage)
{
this.stage = stage;
}
ObservableList<User> usersData = FXCollections.observableArrayList();
@Autowired
private UserRepository userRepository;
@FXML
private TableView<User> tableUsers;
@FXML
private TableColumn<User, Long> userIdColumn;
@FXML
private TableColumn<User, String> userLoginColumn;
@FXML
private TableColumn<User, String> userPassColumn;
@FXML
private TableColumn<User, String> userSurnameColumn;
@FXML
private TableColumn<User, String> userNameColumn;
@Override
public void initialize(URL location, ResourceBundle resources)
{
//id, login, password, surname, name
userIdColumn.setCellValueFactory(new PropertyValueFactory<>("id"));
userLoginColumn.setCellValueFactory(new PropertyValueFactory<>("login"));
userPassColumn.setCellValueFactory(new PropertyValueFactory<>("password"));
userSurnameColumn.setCellValueFactory(new PropertyValueFactory<>("surname"));
userNameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
}
@FXML
private void displayData() throws IOException
{
fillTable();
}
private void fillTable()
{
for (User usersDatum : userRepository.findAll())
{
usersData.add(new User(
usersDatum.getId(),
usersDatum.getLogin(),
usersDatum.getPassword(),
usersDatum.getSurname(),
usersDatum.getName()));
}
tableUsers.setItems(usersData);
}
}
然后,我创建了一个存储库和一个数据库查询,并尝试将其输出到控制台。发生了
@Repository
public interface UserRepository extends JpaRepository<User, Long>
{
@Query(value = "select * from users2", nativeQuery = true)
List<User> findAll();
}
<Button mnemonicParsing="false" prefHeight="30.0" prefWidth="75.0" text="Load" onAction="#displayData">
我们正在使用Spring连接到数据库。您能告诉我在这种情况下,当您单击按钮时,如何在tableview中显示所有数据吗
# 1 楼答案
@Edit2(清物化简)
注入UserRepository
创建一个方法
fillTable()
,如下所示:以这种方式使用
initialize()
:将该方法与
fxml
文件上的按钮链接,即: