सबसे पहले, मैं आपको application.properties
. के बिना इसे करना सीखने की सलाह दूंगा फ़ाइल। हम 21वीं सदी में रहते हैं, जहां Spring-boot
हमें jdbc dataSource
घोषित करने की अनुमति देता है @Bean
. के रूप में MySpringBootApplication
. में डेटाबेस क्रेडेंशियल के साथ कक्षा। इसे कैसे करें देखें यहां
दूसरे, मैं jdbcTemplate
. का उपयोग न करने की सलाह दूंगा जब तक आपके पास समय न हो। मेरे शब्दों को चिह्नित करें, अगर डिबग होता है - यह दुःस्वप्न होगा। तो वसंत विन्यास के अतिरिक्त शुद्ध जेडीबीसी का उपयोग करने का प्रयास करें।
नमूना उदाहरण इसे कैसे करें:
StudentDAO इंटरफ़ेस
public interface StundentDAO {
void addStudent(String name, String surname);
List<Student> findStudents();
}
JdbcStudentDAO कार्यान्वयन
@Repository
public class JdbcStudentDAO implements StudentDAO {
//[IMPORTANT] import javax.sql.datasource package (?)
private Datasource datasource;
@Autowire
public JdbcStudentDAO(Datasource datasource) {
this.datasource = datasource;
}
@Override
public void addStudent(String name, String surname) {
String query = "INSERT INTO Students VALUES (?,?)";
try(Connection connection = datasource.getConnection()) {
try(PreparedStatement statement = connection.preparedStatement(query)) {
statement.setString(1, name);
statement.setString(2, surname);
statement.executeUpdate();
}
} catch(SQLException e) {
e.printStacktrace();
}
}
@Override
public List<Student> findStudents() {
String query = "SELECT * FROM Students";
Student student = null; //will be used soon as DTO
List<Student> listOfStudents = null;
try(Connection connection = datasource.getConnection()) {
try(PreparedStatement statement = connection.preparedStatement(query)) {
try(ResultSet rs = statement.executeQuery()) {
listOfStudents = new ArrayList<>();
while(rs.next()) {
student = new Student(
rs.getString("name");
rs.getString("surname");
);
}
listOfStudents.add(student);
}
}
} catch(SQLException e) {
e.printStacktrace();
}
return listOfStudents;
}
}
कृपया ध्यान दें, कि dataSource
केवल डेटाबेस कनेक्टिविटी करता है। (लिंक देखें)
शुभकामनाएँ!