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

How to update an entire object using jdbcTemplate without specifying column names?

我正在查看参考资料 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);

有办法吗?

不,这不可能。正如您所说,JdbcTemplate 具有使用 query 映射对象的能力,而无需定义 columns/attributes,但 update 没有等效用法。您将必须传递 SQL 和相关参数。正如有人提到的,如果您真的想要这样做,您可以考虑使用休眠。

没有!你只能这样做!

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

使用此查询进行更新:-

String updateSql = "update <table_name> set order= ? where id = ?";

jdbcTemplate.update(updateSql, new Object[]{order, orderId});

它将return 影响行更新计数。