För det första skulle jag råda dig att lära dig hur du gör det utan application.properties
fil. Vi lever i 2000-talet, där Spring-boot
tillåter oss att deklarera jdbc dataSource
som @Bean
med databasuppgifter i MySpringBootApplication
klass. Se hur du gör det här
För det andra rekommenderar jag att du inte använder jdbcTemplate
om du inte har tid. Markera mina ord, om det skulle råka felsöka - det skulle vara mardröm. Så försök att använda ren Jdbc med tillägg av fjäderkonfiguration.
Exempel på hur man gör det:
StudentDAO-gränssnitt
public interface StundentDAO {
void addStudent(String name, String surname);
List<Student> findStudents();
}
JdbcStudentDAO-implementering
@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;
}
}
Observera att dataSource
gör endast databasanslutning.(se länken)
Lycka till!