如何在不指定列名的情况下使用jdbcTemplate更新整个对象?

时间:2018-07-16 13:19:04

标签: java mysql spring spring-jdbc

我正在查看参考文献here。我们可以做到这一点-

String orderSql = "select * from order where id = ?"; jdbcTemplate.query(orderSql, new BeanPropertyRowMapper<>(Order.class), orderId);

这是从数据库中读取的,可以直接反序列化到Order对象中。这很好,很好。

我想做的是-

String updateSql = "update order ? where id = ?"; jdbcTemplate.save(updateSql, new BeanPropertyRowMapper<>(Order.class), order, orderId);

有没有办法做到这一点?

3 个答案:

答案 0 :(得分:0)

否,不可能。 JdbcTemplate可以使用query映射对象,而不必定义列/属性,但是update没有等效用法。您将必须传递您的SQL和相关参数。正如有人提到的那样,如果您真的想要这样做,您可以考虑使用休眠模式。

答案 1 :(得分:0)

不!您只能这样做!

jdbcTemplate.update("update ordertable set order = ? where id = ?", order, orderId);

答案 2 :(得分:0)

使用此查询进行更新:-

DeliveryReceiptManager d = DeliveryReceiptManager.getInstanceFor(connection);
d.addReceiptReceivedListener(new ReceiptReceivedListener() {
    @Override
    public void onReceiptReceived(Jid fromJid, Jid toJid, String receiptId, Stanza receipt) {
        Log.i("delivery", "for: " + receiptId + " received");
        //here you can use sid or receiptId to identify which message is delivered
    }
});

它将返回受影响的行更新计数。