如何在不指定列名的情况下使用 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 影响行更新计数。
我正在查看参考资料 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 影响行更新计数。