Общий интерфейс в разных классах - PullRequest
0 голосов
/ 23 октября 2018

В моем проекте мне приходится использовать базу данных довольно часто, и я решил создать интерфейс, а затем реализовать его в разных классах, поскольку все они будут использовать одни и те же методы.

public interface Project<E> {

        void createTable();

        void insert(E obj);

        E select(int id);

        void delete(int id);

        void update(E obj, int id);

}

Я пытаюсьреализовать его в одном из моих классов, как показано ниже:

public class Person implements Project {

//createTable method
//select method
//delete method

public void insert(Person p) {
        Connection connection = null;
        PreparedStatement ppStm = null;

        try {
            connection = ConnectionConfiguration.getConnection();
            ppStm = connection.prepareStatement("INSERT INTO person (first_name, last_name)"
                    + "VALUES (?,?,?)");
            ppStm.setString(1, p.getName());
            ppStm.setString(2, p.getLname());
            ppStm.executeUpdate();

        } catch(Exception e) {
            e.printStackTrace();
        } finally {

            if (ppStm != null){
                try {
                    ppStm.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                    }
            if (connection != null) {
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
            }
        }

    }

//update method similar to insert();

}

Проблема заключается в том, что когда я пытаюсь переопределить методы insert () и update (), отображается сообщение об ошибке "метод долженпереопределить или реализовать метод супертипа ".Я использовал дженерики, так как думал, что это будет работать в моем коде, потому что у меня есть разные классы разных объектов для его реализации, но я не понимаю правильную реализацию, я думаю.Я хотел бы знать, как я могу изменить свой интерфейс или его реализацию в моих классах, чтобы он мог работать.Также, когда я удаляю @Override, он удаляет ошибку, но все равно показывает, что я не реализую все методы.Заранее спасибо.

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете использовать шаблон DAO

public interface DAO<T> {

  void createTable();

  void insert(T t);

  T select(int id);

  void delete(int id);

  void update(T t, int id);
}

Реализация

class PersonDAO implements DAO<Person> {

  @Override
  public void createTable() {}

  @Override
  public void insert(Person person) {
    /// Connection connection = null;
    /// PreparedStatement ppStm = null;
    // Detailed implementation
    //// .............
  }

  @Override
  public Person select(int id) {
    return null;
  }

  @Override
  public void delete(int id) {}

  @Override
  public void update(Person person, int id) {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...