이전 OrderManager 프로젝트에서는 IBSheet 에 출력하는 데이터들이 모두 DB의 필수값들이었기 때문에
시트 내 값을 수정할 때 UPDATE 문을 쓰면 됐다.
지금은 상황이 다르다.
IBSheet 에 출력하는 데이터는 DB 내 필수값(NOT NULL) + 선택값이 함께 있으며
심지어 NOT NULL 인 데이터를 시트에 출력하지 않는 것도 있다.
그래서 INSERT INTO VALUES ON DUPLICATE KEY UPDATE 를 쓰면 된다.
대신 이 때는 DB에 필수값들은 null 일 수가 없으므로 NOT NULL 인 컬럼들은 모두 시트에 숨김 행으로 추가해야한다.
(아니었다. select 쿼리로 조회해서 서버에서 보낸 건 IBSheet가 가지고있긴하다. 그냥 써도 됨.)
Cols: [
{Header: "품목코드", Name: "itemSeq", Type: "Int", Hidden: 1},
{Header: "파일시퀀스", Name: "fileSeq", Type: "Int", Hidden: 1},
{Header: "파일시리얼", Name: "fileSerl", Type: "Int", Hidden: 1},
{Header: "품목자산분류", Name: "itemType", Type: "Int", Hidden: 1},
Events: {
onRenderFirstFinish: function (evtParam) {
const sheet = evtParam.sheet;
sheet.hideCol("fileSeq");
sheet.hideCol("fileSerl");
sheet.hideCol("itemSeq");
sheet.hideCol("itemType");
꼭 INSERT 해주어야하는 값들을 INSERT INTO 에 적고
ON DUPLICATE KEY UPDATE 에는 이번에 수정해서 추가할 컬럼들을 적어주면 된다.
<insert id="saveItem" parameterType="dev.kloz.weborder.admin.item.dto.ItemDto$Item">
INSERT INTO tbl_item_master (
item_seq,
item_name,
item_no,
item_spec,
item_type,
item_unit,
item_eng_name,
update_user_seq,
update_date,
apply_start_date,
apply_end_date,
reg_user_seq,
reg_date
)
VALUES (
#{itemSeq},
#{itemName},
#{itemNo},
#{itemSpec},
#{itemType},
#{itemUnit},
#{itemEngName},
#{userSeq},
CURRENT_TIMESTAMP(),
#{applyStartDate},
#{applyEndDate},
#{userSeq},
#{regDate}
)
ON DUPLICATE KEY UPDATE
item_name = #{itemName},
item_no = #{itemNo},
item_spec = #{itemSpec},
item_eng_name = #{itemEngName},
update_user_seq = #{userSeq},
update_date = CURRENT_TIMESTAMP()
</insert>
'웹 개발 > [KLOZ] 웹 프로젝트' 카테고리의 다른 글
| [WebOrder] vuetify rules 사용 (0) | 2025.09.18 |
|---|---|
| [WebOrder] $t 정의 에러, vue-i18n (0) | 2025.09.15 |
| [LottoInsight] check(당첨 결과 확인) (4) | 2025.07.23 |
| [LottoInsight] result (당첨 결과) 정적 데이터를 DB에서 받아 넣기로 변경 (0) | 2025.07.23 |
| [KLOZ] getUserId.do쓰지않고 session 과 thymeleaf 이용해서 사용자 정보 출력 (0) | 2025.06.26 |