创建用于使用JDBC查询MySQL表的抽象类或接口

时间:2013-01-25 18:45:42

标签: java mysql database jdbc

我正在实现一个对mysql数据库进行基本查询的应用程序, 例如更新,插入,删除。 而且我想知道是否有人和我一样偏执狂 连接查询的字符串,所以他们写了抽象方法 这样做是为了使它适用于所有表格并避免容易拼写错误。

这是我在连接中避免可怕错误的方法,但我想 看看其他人做了什么,以拓宽我的方式。

这是我在伪代码中的方法;

假设我有一个名为ACC的mysql表,其中包含以下列:

acc_no (primary key) | acc_first_name |  acc_last_name 
123                  |John            | Smith   

然后我实现了一个java抽象类

public abstract class Acc{
  // All column values in the table Acc as constants
  public static final String NUM = "acc_no";
  public static final String FIRST_NAME = "acc_first_name";
  public static final String LAST_NAME = "acc_last_name";

  private Hashtable<String, String> hash = new Hashtable<String, String>();

  public Acc(Connection con, String acc_no){
    // Get values from mysql
    PreparedStatement pstmt = ...SELECT * FROM ACC where ACC_NO = acc_no ....
    ResultSet rs = resultset from pstmt

    //Then put all the resultset rs values in hash so the hashtable have key/values             
    //that look something like this:
    //[[NUM, "123"]
    // [FIRST_NAME, "John"]
    // [LAST_NAME, "Smith"]]
    // The key is one of the constants in this class
    // and the corresponding values are taken from mysql database
  }


  public String get(String column){
    return hash.get(column)
  }
}

因此,当您想要从扩展它的类中访问表中的值时, 它会像

class AccApp extends Acc{

   AccApp(Connection con){
     super(con, "123")
     printName(); 
   }

   String printName(){
      // Notice that I use static constants to get the column values
      // instead of typing this.get("acc_first_name") and this.get("acc_last_name")
      System.out.println(this.get(Acc.FIRST_NAME) + this.get(Acc.LAST_NAME));
   }

}

0 个答案:

没有答案