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!