输出到 TableView
Output to the 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中的所有数据?
@Edit2(清理和简化)
注入 UserRepository
@Autowired
private UserRepository userRepository;
创建一个方法 fillTable()
如下所示:
private void fillTable() throws IOException {
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"));
for (User usersDatum : userRepository.findAll()){
usersData.add(new User(
usersDatum.getId(),
usersDatum.getLogin(),
usersDatum.getPassword(),
usersDatum.getSurname(),
usersDatum.getName()));
}
tableUsers.setItems(usersData);
}
这样使用initialize()
:
@Override
public void initialize(URL location, ResourceBundle resources){
fillTable();
}
Link 使用您在 fxml
文件上的按钮的方法,即:
<Button mnemonicParsing="false" onAction="#fillTable" text="Fill Table"/>
需要从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中的所有数据?
@Edit2(清理和简化)
注入 UserRepository
@Autowired
private UserRepository userRepository;
创建一个方法 fillTable()
如下所示:
private void fillTable() throws IOException {
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"));
for (User usersDatum : userRepository.findAll()){
usersData.add(new User(
usersDatum.getId(),
usersDatum.getLogin(),
usersDatum.getPassword(),
usersDatum.getSurname(),
usersDatum.getName()));
}
tableUsers.setItems(usersData);
}
这样使用initialize()
:
@Override
public void initialize(URL location, ResourceBundle resources){
fillTable();
}
Link 使用您在 fxml
文件上的按钮的方法,即:
<Button mnemonicParsing="false" onAction="#fillTable" text="Fill Table"/>