sql >> データベース >  >> RDS >> PostgreSQL

Spring JDBC + Postgres SQL +Java8-LocalDateから/への変換

    JDBCによる新しいDate&Date APIサポートは、 JEP 170:JDBC4.2 によって定義されています。 。 Postgres ダウンロードページ JDBC 4.2の新機能との互換性は、Postgresバージョン9.4以降でのみ開始されるため、古いドライバーで新しいAPIを使用すると互換性の問題が発生します。

    setObject(1, new java.util.Date());でも LocalDateのような新しいAPIだけでなく、Postgresの同じ制約(MySQLによって喜んで受け入れられます)によって拒否されます 。一部の動作は実装に依存するため、java.sql.*のみ ほぼ保証されています(大まかに言えば)。

    Spring JDBCフレームワークに関しては、その動作をオーバーライドすることで、後で後悔することなく回避できると思います。私はあなたがすでにしたことに対して少し異なるアプローチを提案します:

    1. BeanPropertySqlParameterSourceを拡張します 新しい日付と時刻のAPI、および必要に応じて入力されたパラメーターに関連付けられた他のクラスを操作するための動作(私はそのSpring APIに精通していません)。
    2. すでにオーバーライドされているBeanPropertyRowMapperの動作を抽出します 操作をフェッチするために別のクラスに移動します。
    3. ファクトリパターンまたはユーティリティクラスですべてをまとめて、もう一度確認する必要がないようにします。

    このようにして、APIがサポートされた場合に将来のリファクタリング機能を強化し、開発中に必要なコードの量を削減します。

    DAO もご覧ください。 アプローチします。



    1. Flywayの修復により、OracleDBでFlywaySqlExceptionがスローされます

    2. C#をOracleに接続する

    3. SQL UNION FOR XML 名の出力列

    4. RDSソリューションのビッグテーブルをテーブルフルエラーに変更