sql >> Databáze >  >> RDS >> Mysql

Spring JDBC pomocí souboru application.properties

Nejprve bych vám poradil, abyste se naučili, jak to udělat bez application.properties soubor. Žijeme ve 21. století, kde Spring-boot nám umožňuje deklarovat jdbc dataSource jako @Bean s přihlašovacími údaji k databázi v MySpringBootApplication třída. Podívejte se, jak na to zde

Za druhé, nedoporučuji používat jdbcTemplate pokud nemáte čas. Označte má slova, kdyby náhodou došlo k ladění - byla by to noční můra. Zkuste tedy použít čistý Jdbc s přidáním konfigurace pružiny.

Ukázkový příklad jak na to:

Rozhraní StudentDAO

    public interface StundentDAO {

    void addStudent(String name, String surname);

    List<Student> findStudents();
}

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

Vezměte prosím na vědomí, že dataSource zajišťuje pouze připojení k databázi. (viz odkaz)

Hodně štěstí!




  1. Omezení terminologie MySQL vs rozdíl cizích klíčů?

  2. Žádný takový soubor nebo adresář nebo Žádný takový hostitel není znám při spouštění migrací

  3. Mysql nekonzistentní počet řádků count(*) vs. table.table_rows v information_schema

  4. Primární (nebo klíčový) identifikátor migrace Laravel je příliš dlouhý