NamedParameterJdbcTemplate insertbatchSpring-boot と Oracle を使用しており、メソッドを使用して新しいレコードをデータベース テーブルに挿入したいと考えています。
しかし、私は必要な値をobject(ProductMarket)内部object(Market)に持っています (getMark().getId())
SqlParameterSource内部からマーケット ID を取得するように指示するにはどうすればよいObjectですか?
package x.dao.productMarket;
import java.util.List;
import x.model.base.ProductMarket;
public interface IProductMarketDao {
public static final String INSERT_PRODUCT_MARKETS =
" INSERT " +
" INTO PRODUCT_MARKETS" +
" (" +
" product_id ," +
" market_id" +
" )" +
" VALUES" +
" (" +
" :productId ," +
" :marketId " +
" ) ";
void insert(List < ProductMarket > productMarkets);
}
package x.dao.productMarket;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.SqlParameterSource;
import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils;
import org.springframework.stereotype.Repository;
import x.model.base.ProductMarket;
@
Repository
public class ProductMarketDao implements IProductMarketDao {
@
Autowired
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
@
Override
public void insert(List < ProductMarket > productMarkets) {
SqlParameterSource[] batch =
SqlParameterSourceUtils.createBatch(productMarkets.toArray());
namedParameterJdbcTemplate.batchUpdate(INSERT_PRODUCT_MARKETS,
batch);
}
}
package x.model.base;
public class ProductMarket implements Serializable {
private static final long serialVersionUID = 421870753189756693 L;
private long productId;
private Market market;
/**
* @return the productId
*/
public long getProductId() {
return productId;
}
/**
* @param productId the productId to set
*/
public void setProductId(long productId) {
this.productId = productId;
}
public Market getMarket() {
return market;
}
public void setMarket(Market market) {
this.market = market;
}
}