- 전체값을 일반적인 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();
}
'DataBase > JOOQ' 카테고리의 다른 글
[JOOQ] Select 문 커스텀해서 만들기. Dynamic select statement. select custom. (0) | 2021.07.27 |
---|---|
[JOOQ] SQL pretty. (0) | 2021.05.17 |
[JOOQ] Update 시, 조건에 따라 업데이트 컬럼을 추가. add update column by condition. (0) | 2021.05.11 |