DataBase/JOOQ
[JOOQ] insert Step으로 편리하게 insert 하자.
PCOSPD 100LRE SCRIE4A2
2021. 1. 14. 12:32
- 전체값을 일반적인 insert 문으로 삽입한 경우.
// 일반적인 insert 문의 경우.
if (dto.getItemList() != null) {
for (PromotionItemDTO item : dto.getItemList()) {
DSL.insertInto(PROMOTION_REGISTER_ITEM)
.set(PROMOTION_ITEM.REGISTER_ID,
DSL.select(PROMOTION_REGISTER_ITEM.ID).from(
PROMOTION_REGISTER_ITEM)
.where(PROMOTION_REGISTER_ITEM.FILE_KEY.eq(dto.getFileKey()))
.orderBy(PROMOTION_REGISTER_ITEM.ID.desc()).limit(1)
.fetchOneInto(Integer.class))
.set(PROMOTION_REGISTER_ITEM.ITEM_CODE, item.getItemCode())
.set(PROMOTION_REGISTER_ITEM.VALUE, item.getValue())
.set(PROMOTION_REGISTER_ITEM.IS_FREE, item.isFree() ? (byte) 1 : (byte) 0)
.execute();
}
}
- insert Step을 사용하여 insert 컬럼을 분기처리 하고, 한방에 execute() 한 경우.
// insertStep으로 조건에 따라 insert 컬럼을 다르게 지정한 경우.
if (dto.getItemList() != null) {
for (PromotionItem item : dto.getItemList()) {
InsertSetMoreStep<PromotionRecord> insertStep =
DSL.insertInto(PROMOTION_REGISTER_ITEM)
.set(PROMOTION_REGISTER_ITEM.ID, dto.getItemId())
.set(PROMOTION_REGISTER_ITEM.CREATED_AT,Timestamp.valueOf(LocalDateTime.now()));
}
if (dto.getPurchaseType() == SALES) {
insertStep.set(PROMOTION_REGISTER_ITEM.CALCULATE_TYPE, item.getCalculateType())
.set(PROMOTION_REGISTER_ITEM.PROMOTION_TYPE, PromotionType.SALES);
}
if (dto.getSettlementType() == MONTHLY) {
insertStep.set(PROMOTION_REGISTER_ITEM.CALCULATE_TYPE, item.getCalculateType())
.set(PROMOTION_REGISTER_ITEM.PROMOTION_TYPE, PromotionType.SALES);
}
insertStep.execute();
}