Java 如何使用jdbcTemplate更新整个对象而不指定列名?
我在看参考资料。我们可以做到-Java 如何使用jdbcTemplate更新整个对象而不指定列名?,java,mysql,spring,spring-jdbc,Java,Mysql,Spring,Spring Jdbc,我在看参考资料。我们可以做到- String orderSql=“从id=?”的顺序中选择*; jdbcTemplate.query(orderSql、新BeanPropertyRowMapper(Order.class)、orderId) 这将从数据库中读取数据,并可以直接反序列化到Order对象中。这很好 我想做的是- String updateSql=“更新顺序?其中id=?”; 保存(更新SQL,新BeanPropertyRowMapper(Order.class),Order,orde
String orderSql=“从id=?”的顺序中选择*;
jdbcTemplate.query(orderSql、新BeanPropertyRowMapper(Order.class)、orderId)代码>
这将从数据库中读取数据,并可以直接反序列化到Order
对象中。这很好
我想做的是-
String updateSql=“更新顺序?其中id=?”;
保存(更新SQL,新BeanPropertyRowMapper(Order.class),Order,orderId)代码>
有办法吗?不,不可能JdbcTemplate
具有使用query
映射对象的能力,正如您所说,无需定义列/属性,但是update
没有等效用法。您必须传入SQL和相关参数。正如有人提到的,如果你真的想这样做,你可以考虑使用Hibernate。 < P>不!你只能这样做
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});
String updateSql=“更新集顺序=?其中id=?”;
update(updateSql,新对象[]{order,orderId});
它将返回受影响的行更新计数。为什么不编写一个方法,首先基于列信息构建查询,然后返回该查询以在jdbcTemplate.update(…)中使用方法。这是一种方法,但如果只传入一个对象,让它决定哪些列已更改并更新相应的列,不是更方便吗?您不是在传递对象,如果您愿意,我建议使用hibernate,它知道对象的状态。这称为JPA。。。Spring现在有了一种知道要保留哪些列的方法。行映射器是最好的工具,仅当名称完全匹配时才起作用。如果你想做这样的更新,用JPA代替。我以前用过JPA,它是这样工作的。出于某种原因,我们决定将原始查询与jdbctemplate一起使用。这就是问题所在!