Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Spring JDBC usando o arquivo application.properties


Em primeiro lugar, aconselho você a aprender como fazer isso sem application.properties Arquivo. Vivemos no século 21, onde Spring-boot nos permite declarar jdbc dataSource como @Bean com credenciais de banco de dados em MySpringBootApplication classe. Veja como fazer isso aqui

Em segundo lugar, eu aconselho não usar jdbcTemplate a menos que você não tenha tempo. Marque minhas palavras, se acontecer de depurar - seria um pesadelo. Portanto, tente usar Jdbc puro com adição de configuração de mola.

Exemplo de exemplo de como fazer:

Interface StudentDAO
    public interface StundentDAO {

    void addStudent(String name, String surname);

    List<Student> findStudents();
}

Implementação do 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;
    }
} 

Observe que dataSource faz apenas conectividade de banco de dados. (veja o link)

Boa sorte!