sql >> Databáze >  >> RDS >> PostgreSQL

Spring JDBC + Postgres SQL + Java 8 - převod z/do LocalDate

Nová podpora rozhraní Date &Date API s JDBC je definována v JEP 170:JDBC 4.2 . Postgres stránka ke stažení kompatibilita s novými funkcemi JDBC 4.2 začíná až od verze Postgres 9.4, takže se při používání nového API se staršími ovladači objeví některé problémy s kompatibilitou.

Dokonce i setObject(1, new java.util.Date()); je odmítnuto stejným omezením v Postgres (které MySQL šťastně přijímá), nejen nové API jako LocalDate . Některá chování budou závislá na implementaci, takže pouze java.sql.* je do značné míry zaručeno (zhruba řečeno).

Pokud jde o framework Spring JDBC, myslím, že přepsání jeho chování funguje tak, aby se to obešlo, aniž byste toho později litovali. Navrhuji trochu jiný přístup k tomu, co jste již udělali:

  1. Rozšiřte BeanPropertySqlParameterSource chování pro práci s novým datem a časem API a dalšími třídami spojenými se vstupem parametrů, pokud je to potřeba (neznám toto Spring API).
  2. Extrahujte již přepsané chování BeanPropertyRowMapper do jiné třídy pro operace načítání.
  3. Všechno to zabalte továrním vzorem nebo užitnou třídou, abyste se na to nemuseli znovu dívat.

Tímto způsobem vylepšíte budoucí možnosti refaktoringu, pokud bude API podporováno, a snížíte množství kódu potřebného během vývoje.

Můžete se také podívat na některé DAO přístupy.



  1. Jak zobrazit typ proměnné v PL/SQL?

  2. Potřebujete pomoc s SQL pro hodnocení výsledků vyhledávání

  3. Jak mohu použít příkaz mysql source s proměnnou mysql?

  4. Jak lze vybrat všechny záznamy kromě prvních 3 záznamů?