En primer lugar, te aconsejo que aprendas a hacerlo sin application.properties expediente. Vivimos en el siglo XXI, donde Spring-boot nos permite declarar jdbc dataSource como @Bean con las credenciales de la base de datos en MySpringBootApplication clase. Vea cómo hacerlo aquí
En segundo lugar, recomendaría no usar jdbcTemplate a menos que no tengas tiempo. Marque mis palabras, si sucede que se depura, sería una pesadilla. Así que intente usar Jdbc puro con la adición de la configuración de primavera.
Ejemplo de ejemplo de cómo hacerlo:
Interfaz StudentDAO
public interface StundentDAO {
void addStudent(String name, String surname);
List<Student> findStudents();
}
Implementación de 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;
}
}
Tenga en cuenta que dataSource solo tiene conectividad de base de datos (ver el enlace)
¡Buena suerte!