Я пытаюсь создать приложение в 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. Я понятия не имею, возможно ли это. Было бы очень полезно, если кто-либо из вас предоставит вам информацию, поэтому мне больше не нужно тратить время.
Почему вы не используете библиотеку? JdbcTemplate от Spring? –
Вы имели в виду 'public abstract class AbstractModel'? и 'public class BezoekerModel расширяет AbstractModel'? – Buildersrejected
@Buildersrejected Да, но те, которые я показал, были доставлены так далеко. Это было просто показать, какова была моя цель. Эти 2 класса не связаны сейчас. – Necati