sql >> Database >  >> RDS >> Mysql

Spring JDBC met behulp van het bestand application.properties

Ten eerste raad ik je aan om te leren hoe je dit kunt doen zonder application.properties het dossier. We leven in de 21e eeuw, waar Spring-boot stelt ons in staat om jdbc dataSource . te declareren als @Bean met databasegegevens in MySpringBootApplication klas. Bekijk hier hoe u dit doet

Ten tweede raad ik aan om jdbcTemplate . niet te gebruiken tenzij je geen tijd hebt. Let op mijn woorden, als debuggen gebeurt, zou het een nachtmerrie zijn. Dus probeer pure Jdbc te gebruiken met toevoeging van veerconfiguratie.

Voorbeeld voorbeeld hoe het te doen:

StudentDAO-interface

    public interface StundentDAO {

    void addStudent(String name, String surname);

    List<Student> findStudents();
}

JdbcStudentDAO-implementatie

    @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;
    }
} 

Houd er rekening mee dat dataSource doet alleen Database-connectiviteit. (zie de link)

Veel succes!




  1. Problemen met MySQL en Python Select-verklaring

  2. Als de mysql WHERE-component leeg is, retourneert u alle rijen

  3. Tijdstempel bijwerken wanneer rij wordt bijgewerkt in PostgreSQL

  4. Oracle SQL-volgorde in subquery-problemen!