导入包和设计模式 DAO

importing packages and design pattern DAO

我真的在努力学习正确的方法来访问实践安全性和可读性设计原则的数据库。

首先,我在导入我需要的包时遇到了一个奇怪的问题。下面是我的应用程序 class,我现在正尝试 运行 以确保一切正常,并且我可以在进一步编码之前连接到数据库。

package application;

import dataBase.MySQLDataBaseDAO;
import establishConnection;  //error

public class App {

public static void main(String[] args) {

    MySQLDataBaseDAO database;
    new DataBaseConnection();//naturally error a too
}

}

这里只是我尝试导入的包的一部分。

package dataBase;

import java.util.List;

public class MySQLDataBaseDAO {


MySQLDataBaseDAO(){

}

void insert(Person person) {

}

void find(Person person) {

} 

此 class 将使用依赖项注入创建一个 GUI,并要求用户输入用户名和密码并连接到数据库。

package establishConnection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

class DataBaseConnection {

private Connection conn = null;
private String URL = "jdbc:mysql://localhost/employee";
private String userName = "";
private String passWord = "";

DataBaseConnection() {
    connect();
}

如果我不清楚,我的问题是: 1)我的进口怎么错了?我想从另一个包中的 class 调用构造函数。 2) 我的设计看起来如何。我没有 post 整个代码,因为我不想用长 post.

惹恼任何人

如果您想导入一个包的所有 类,您必须使用这个:

import establishConnection.*; 

你实际上只需要导入一个 class 而你正在导入 整个 package(而不是定义哪个 class)这就是为什么它会引发错误。

尝试

import establishConnection.DataBaseConnection;    

而不是

import establishConnection;

Only a type can be imported. establishConnection resolves to a package.

我希望你会看到这个错误,因为你应该导入一个类型或 *

使用import establishConnection.*;import establishConnection.<your class>

如果您使用的是 eclipse - 使用 Ctrl+Shift+O 将为您组织导入

您的应用程序初始化应如下所示:

package application;

import dataBase.DataBaseDAO;
import dataBase.MySQLDataBaseDAO;
import establishConnection.DataBaseConnection;

public class App {
    public static void main(String[] args) {
        DataBaseConnection connection = new DataBaseConnection();
        DataBaseDAO databaseDao = new MySQLDataBaseDAO(connection);
    }
}

并且您的 MySqlDataBaseDAO 需要数据库连接。

package dataBase;

import establishConnection.DataBaseConnection;

public class MySQLDataBaseDAO extends DataBaseDAO {
    private DataBaseConnection connection;

    public MySQLDataBaseDAO(DataBaseConnection connection) {
        this.connection = connection;
    }

    public void insert(Person person) { }

    public void find(Person person) { }
}

最后,它应该 extend 一个名为 DataBaseDAO 的接口。

包数据库;

public interface DataBaseDAO {
    public void insert(Person person);
    public void find(Person person);
}