我想在MVC中也有一個數據庫建立一個應用程序。我有多個模型,我正在從模型類中投射數據。隨着應用程序進展的繼續,它似乎有很多重複。在我的模型中的每個函數中,我需要打開一個連接,語句和結果集構建查詢等,並使用result.next();
語句獲取數據。創建一個抽象模型來檢索數據
爲了擺脫這些重複,我開始使用名爲AbstractModel的抽象類。我的目標是將所有模型擴展到這個類並傳遞查詢。對我來說困難的部分是我需要在result.next()
循環中檢索數據的位置。
我以爲我可以將結果集傳回給我的模型,但後來我無法再關閉我的資源。
我的模型類之一。
public class BezoekerModel
{
public Gebruiker getGebruiker(String username, String password)
{
Gebruiker user = null;
PreparedStatement stat = null;
ResultSet result = null;
Connection conn = null;
try
{
conn = SimpleDataSourceV2.getConnection();
String query = "SELECT * FROM gebruiker WHERE gebruikersnaam = ? AND wachtwoord = ?;";
stat = conn.prepareStatement(query);
stat.setString(1, username);
stat.setString(2, password);
result = stat.executeQuery();
while (result.next())
{
String gebruikerstype = result.getString("gebruikerstype");
String voornaam = result.getString("voornaam");
String tussenvoegsel = result.getString("tussenvoegsel");
String achternaam = result.getString("achternaam");
int schoolcode = result.getInt("schoolcode");
user = new Gebruiker(voornaam, tussenvoegsel, achternaam, gebruikerstype, schoolcode);
}
}
catch (SQLException ex)
{
ex.printStackTrace();
} finally
{
try
{
result.close();
stat.close();
conn.close();
}
catch (SQLException ex)
{
System.out.println("Error: " + ex.toString());
}
}
return user;
}
}
正如你所看到的,我把我檢索到的所有數據都轉換成了Gebruiker對象,後來我也回來了。
這是我現在正在構建的抽象模型。
public class AbstractModel
{
public List<Object> getData(String query) {
List<Object> data = new ArrayList();
Statement stat = null;
ResultSet result = null;
Connection conn = null;
try {
conn = SimpleDataSourceV2.getConnection();
stat = conn.createStatement();
result = stat.executeQuery(query);
while (result.next()) {
// ?????
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
result.close();
stat.close();
conn.close();
} catch (SQLException ex) {
System.out.println("Error: " + ex.toString());
}
}
return data;
}
正如我前面說過的,我想將要在bezoekerModel中創建的查詢傳遞給AbstractModel。我不知道這是否可能。如果你們中的任何一位對此提供了意見,我們將不勝感激,所以我不必再浪費任何時間。
爲什麼你不使用圖書館? Spring的JdbcTemplate? –
您是不是指'公共抽象類AbstractModel'?和'公共類BezoekerModel擴展AbstractModel'? – Buildersrejected
@Buildersrejected是的,但是我展示的那些你還沒有得到那麼多。這只是爲了展示我的目標是什麼。這兩個班級現在沒有連接。 – Necati