有没有办法修复这个问题,而不需要重复编写列的代码?

huangapple go评论117阅读模式
英文:

is there any way to fix this without repeating of the columns code?

问题

请任何帮助将不胜感激。我有一个名为private void update database的方法,其中的代码如下。我想知道是否有任何方法可以在不重复的情况下缩短代码?

  1. firstNameColumn.setOnEditCommit(event -> {
  2. Customer customer = event.getRowValue();
  3. customer.setFirstName(event.getNewValue());
  4. try {
  5. Utils.getInstance().update("firstName", event.getNewValue(), customer.getId());
  6. } catch (SQLException e) {
  7. throw new RuntimeException(e);
  8. }
  9. });
  10. middleNameColumn.setOnEditCommit(event -> {
  11. Customer customer = event.getRowValue();
  12. customer.setFirstName(event.getNewValue());
  13. try {
  14. Utils.getInstance().update("middleName", event.getNewValue(), customer.getId());
  15. } catch (SQLException e) {
  16. throw a RuntimeException(e);
  17. }
  18. });
  19. lastNameColumn.setOnEditCommit(event -> {
  20. Customer customer = event.getRowValue();
  21. customer.setFirstName(event.getNewValue());
  22. try {
  23. Utils.getInstance().update("lastName", event.getNewValue(), customer.getId());
  24. } catch (SQLException e) {
  25. throw new RuntimeException(e);
  26. }
  27. });

我有三个字段:姓氏列、中间名列和姓氏列,但它们在一个方法内重复出现。

英文:

Please any help would be appreciated. I have an method called private void update database and the its code inside is as below. I wonder is there any way to shorten the code without repeating ?

  1. firstNameColumn.setOnEditCommit(event -> {
  2. Customer customer = event.getRowValue();
  3. customer.setFirstName(event.getNewValue());
  4. try {
  5. Utils.getInstance().update("firstName", event.getNewValue(), customer.getId());
  6. } catch (SQLException e) {
  7. throw new RuntimeException(e);
  8. }
  9. });
  10. middleNameColumn.setOnEditCommit(event -> {
  11. Customer customer = event.getRowValue();
  12. customer.setFirstName(event.getNewValue());
  13. try {
  14. Utils.getInstance().update("middleName", event.getNewValue(), customer.getId());
  15. } catch (SQLException e) {
  16. throw new RuntimeException(e);
  17. }
  18. });
  19. lastNameColumn.setOnEditCommit(event -> {
  20. Customer customer = event.getRowValue();
  21. customer.setFirstName(event.getNewValue());
  22. try {
  23. Utils.getInstance().update("lastName", event.getNewValue(), customer.getId());
  24. } catch (SQLException e) {
  25. throw new RuntimeException(e);
  26. }
  27. });

I have the fields: first name column, middle name column, and last name column, but they are repeating inside a method.

答案1

得分: 1

是的,你可以。

据我所见,下面的代码在这三个更新中都被使用:

  1. Customer customer = event.getRowValue();
  2. customer.setFirstName(event.getNewValue());
  3. try {
  4. Utils.getInstance().update("xxxx", event.getNewValue(), customer.getId());
  5. } catch (SQLException e) {
  6. throw new RuntimeException(e);
  7. }

它只是将 "xxxx" 更改为 firstName、middleName 或 lastName。

你可以创建一个函数,这个函数会被这三个更新调用。

  1. firstNameColumn.setOnEditCommit(event -> {
  2. updateCustomerBy("firstName", event);
  3. });
  4. middleNameColumn.setOnEditCommit(event -> {
  5. updateCustomerBy("middleName", event);
  6. });
  7. lastNameColumn.setOnEditCommit(event -> {
  8. updateCustomerBy("lastName", event);
  9. });
  10. private void updateCustomerBy(String name, Event event) {
  11. // 我不知道事件的类型,所以我只是用 Event 代替了。你应该使用正确的类型。
  12. Customer customer = event.getRowValue();
  13. customer.setFirstName(event.getNewValue());
  14. try {
  15. Utils.getInstance().update(name, event.getNewValue(), customer.getId());
  16. } catch (SQLException e) {
  17. throw new RuntimeException(e);
  18. }
  19. }
英文:

Yes you can.

As far i can see the next code is used in the three updates:

  1. Customer customer = event.getRowValue();
  2. customer.setFirstName(event.getNewValue());
  3. try {
  4. Utils.getInstance().update("xxxx", event.getNewValue(), customer.getId());
  5. } catch (SQLException e) {
  6. throw new RuntimeException(e);
  7. }

It just changes the xxx by firstName, middleName or lastName.

You can create a function that is gonna be called by the three updates.

  1. firstNameColumn.setOnEditCommit(event -> {
  2. updateCustomerBy("firstName", event);
  3. });
  4. middleNameColumn.setOnEditCommit(event -> {
  5. updateCustomerBy("middleName", event);
  6. });
  7. lastNameColumn.setOnEditCommit(event -> {
  8. updateCustomerBy("lastName", event);
  9. });
  10. private void updateCustomerBy(String name, Event event){
  11. //I dont know the type of event, so i just put Event. You shall use the correct type
  12. Customer customer = event.getRowValue();
  13. customer.setFirstName(event.getNewValue());
  14. try {
  15. Utils.getInstance().update(name, event.getNewValue(), customer.getId());
  16. } catch (SQLException e) {
  17. throw new RuntimeException(e);
  18. }
  19. }

答案2

得分: 0

  1. firstNameColumn.setOnEditCommit(event -> {
  2. update("firstName", event);
  3. });
  4. middleNameColumn.setOnEditCommit(event -> {
  5. update("middleName", event);
  6. });
  7. lastNameColumn.setOnEditCommit(event -> {
  8. update("lastName", event);
  9. });
  10. public void update(String column, Event event) {
  11. Customer customer = event.getRowValue();
  12. customer.setFirstName(event.getNewValue());
  13. try {
  14. Utils.getInstance().update(column, event.getNewValue(), customer.getId());
  15. } catch (SQLException e) {
  16. throw new RuntimeException(e);
  17. }
  18. }
英文:
  1. firstNameColumn.setOnEditCommit(event -> {
  2. update("firstName",event)
  3. });
  4. middleNameColumn.setOnEditCommit(event -> {
  5. update("middleName",event) });
  6. lastNameColumn.setOnEditCommit(event -> {
  7. update("lastName",event)});
  8. public void update(String column,Event event){
  9. Customer customer = event.getRowValue();
  10. customer.setFirstName(event.getNewValue());
  11. try {
  12. Utils.getInstance().update(column, event.getNewValue(), customer.getId());
  13. } catch (SQLException e) {
  14. throw new RuntimeException(e);
  15. }
  16. }

huangapple
  • 本文由 发表于 2020年7月30日 02:49:24
  • 转载请务必保留本文链接:https://go.coder-hub.com/63160495.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定