导入包和设计模式DAO

时间:2015-02-13 09:37:06

标签: java design-patterns jdbc

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

首先,我在导入我需要的软件包时遇到了一些奇怪的问题。下面是我正在尝试运行的App类,以确保一切正常,我可以在进一步编码之前连接到数据库。

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) {

} 

此类将使用依赖注入创建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)我的导入错误怎么办?我想从一个不同包中的类调用构造函数。 2)我的设计看起来如何。我没有发布整个代码,因为我不想惹恼任何有长篇文章的人。

4 个答案:

答案 0 :(得分:1)

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

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的接口。

package dataBase;

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

答案 1 :(得分:0)

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

import establishConnection.*; 

答案 2 :(得分:0)

您实际上只需导入一个class,而您正在导入整个 package(而不是定义哪个类),这就是它引发错误的原因。

import establishConnection.DataBaseConnection;    

而不是

import establishConnection;

答案 3 :(得分:0)

  

只能导入一种类型。 establishConnection解析为包。

我希望您会看到此错误,因为您应该导入类型或*

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

如果您正在使用eclipse - 请使用Ctrl + Shift + O来为您组织导入