Mysql
 sql >> Base de données >  >> RDS >> Mysql

Spring JDBC utilisant le fichier application.properties

Tout d'abord, je vous conseille d'apprendre à le faire sans application.properties dossier. Nous vivons au 21ème siècle, où Spring-boot nous permet de déclarer jdbc dataSource comme @Bean avec les informations d'identification de la base de données dans MySpringBootApplication classer. Voyez comment le faire ici

Deuxièmement, je vous conseille de ne pas utiliser jdbcTemplate à moins que vous n'ayez pas le temps. Marquez mes mots, s'il arrivait à déboguer - ce serait un cauchemar. Essayez donc d'utiliser Jdbc pur avec l'ajout d'une configuration de ressort.

Exemple d'exemple comment le faire :

Interface ÉtudiantDAO

    public interface StundentDAO {

    void addStudent(String name, String surname);

    List<Student> findStudents();
}

Mise en œuvre 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;
    }
} 

Veuillez noter que dataSource ne fait que la connectivité de la base de données. (voir le lien)

Bonne chance !