更新、挿入、削除など、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));
}
}