java - 如何在 DAO 中传递对象字段?

标签 java sql jdbc dao

我为我的实体创建了 DAO。现在我有一个问题:我需要在某些方法中传递另一个对象的字段。例如:

@Override
public void updateById(PriceTrack priceTrack, int id) throws DBException {
    PreparedStatement ps = null;
    try {
        conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
        conn.setAutoCommit(false);
        ps = conn.prepareStatement(UPDATE_BY_ID);
        ps.setInt(1, priceTrack.getOldPrice());
        ps.setInt(2, priceTrack.getNewPrice());
        ps.setDate(3, new java.sql.Date(priceTrack.getLastUpdatedPrice().getTime()));
        // todo - pass Appartment id
        ps.setObject(4, new Apartment());
        ps.executeUpdate();
        conn.commit();
    } catch (SQLException e) {
        JdbcUtils.rollbackQuitely(conn);
        throw new DBException("Cannot execute SQL = '" + UPDATE_BY_ID + "'", e);
    } finally {
        JdbcUtils.closeQuitely(ps);
        JdbcUtils.closeQuitely(conn);
    }
}

这里我需要传递相应的Aparment_id值。创建 new Apartment() 是错误的。

UPDATE_BY_ID的内容:

    public static final String UPDATE_BY_ID = "UPDATE price_track SET old_price=?, new_price=?, lastupdated_price=?, apartment_id=?";

最好的方法是什么?

这也是显示连接的图表。 enter image description here

最佳答案

如果您只想更新 old_pricenew_pricelastupdated_price,则不一定要更新 aparment_id,因为它是外键。假设它不会改变是合乎逻辑的。您可以从查询中删除 aparment_id:

UPDATE price_track SET old_price=?, new_price=?, lastupdated_price=?

并从代码中适当删除 ps.setObject(4, new Apartment());

JDBC 需要手动配置,并且它不会自动执行任何操作。

关于java - 如何在 DAO 中传递对象字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31071446/

相关文章:

php - MYSQL 使用 SUM() 选择查询

Java JDBC - 多个准备好的语句批量插入

c# - Apache Mahout .net 模拟的机器学习库

java - Kafka生产者无法向服务器发送数据

Java swing、超出范围的变量和按钮的使用

jdbc - 使用informix不支持 Elasticsearch 河

java - 关闭资源命令

java - 用于 Quartz 调度程序的 Junit

sql - 如果 ID 相同,则 T-SQL 合并行并为每行保留唯一信息

SQL:将列值分成多列