2

プログラムで SQL ステートメントを作成する必要があります。<"column_name",value>の形式でマップに値があります。これで、基本クエリができました。where 句を追加し、マップを反復処理して、値が null でない場合は、この" " + キー + "=" + 値 + " と "を追加します。それから私は彼の最後の5文字を​​切り取り、それは完了です. これよりも良いものを使用したいと思います。Tapestry 5 + Spring JDBC Template を使用していることに注意してください (Hibernate はオプションではありません)。

ありがとう、オンドレイ

4

3 に答える 3

2

動的条件を使用する必要がある場合でも、同様に生成することをお勧めwhere?ます

" " + key + "=?"

を呼び出してから、もう一度繰り返しますpreparedStatement.setXXX。ドライバーに応じて、setObjectパラメーターの型を呼び出したり確認したりできます。

if (value instanceof String) 
    preparedStatement.setString((String)value)
else if ...

使用?すると、次の利点があります。

  • Date文字列などの型の変換や特殊記号の引用については考えていません。
  • ?リテラル値ではなく使用すると、データベースは実行計画をより効果的にキャッシュできます。
于 2011-07-20T07:42:20.250 に答える
0

クラス PreparedStatementCreator を使用する必要があります

final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";

KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
    new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            PreparedStatement ps =
                connection.prepareStatement(INSERT_SQL, new String[] {"id"});
            ps.setString(1, name);
            return ps;
        }
    },
    keyHolder);

// keyHolder.getKey() now contains the generated key

参照: http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html

セクションを参照してください: 11.2.8

于 2011-07-20T08:47:09.830 に答える
0

squiggle -sql のようなものを探しているようです。また、「set」メソッドを使用した準備済みステートメントについても忘れないでください。

于 2011-07-20T08:20:00.717 に答える