반응형
여승철
INTP 개발자
여승철
  • 분류 전체보기 (376)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Java (43)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • ETC (11)

블로그 메뉴

  • 홈
  • 태그

인기 글

태그

  • servlet
  • 회원 관리
  • controller
  • HTTP
  • EC2
  • 로그인
  • 이펙티브 자바
  • 게시판
  • jsp
  • Dao
  • 환경 세팅
  • mybatis
  • 디자인 패턴
  • Spring Batch
  • querydsl
  • 스트림
  • JSTL
  • ubuntu
  • JDBC
  • 맥킨지

최근 댓글

최근 글

hELLO· Designed By 정상우.
여승철

INTP 개발자

MyBatis ON DUPLICATE KEY UPDATE: insert Key 중복 시 update 처리
MyBatis

MyBatis ON DUPLICATE KEY UPDATE: insert Key 중복 시 update 처리

2023. 9. 26. 15:20
반응형

ON DUPLICATE KEY UPDATE: upsert 구현

`ON DUPLICATE KEY UPDATE`는 `MySQL` 및 `MariaDB`에서 사용되는 SQL 문장 중 하나로, 주로 데이터를 삽입하려고 할 때 기존 레코드와 중복된 경우(중복 레코드) 기존 레코드를 업데이트하거나 무시하는데 사용됩니다.

 

중복 레코드:
데이터베이스에 이미 동일한 고유 키(primary key 또는 unique key)가 존재하는 경우, `ON DUPLICATE KEY UPDATE`를 사용하여 중복 레코드를 업데이트하거나 새로운 값을 가질 수 있습니다.

 

구문:

INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE column1 = value1, column2 = value2, ...;

 

MyBatis에서의 구문:

  • <insert> 태그에서 upsert 구문을 작성할 수 있습니다.
  • INSERT 시 반환 값: 1
  • UPDATE 시 반환 값: 2
<insert id="upsertUser" parameterType="User">
    INSERT INTO user (user_id, user_password, user_name, phone, user_organization, subscription_service, create_date, update_date)
    VALUES (#{userId}, #{userPassword}, #{userName}, #{phone}, #{userOrganization}, #{subscriptionService}, NOW(), NOW())
    ON DUPLICATE KEY UPDATE
            user_name = #{userName},
        <if test="userPassword != null and userPassword != ''">
            user_password = #{userPassword},
        </if>
        <if test="userOrganization != null and userOrganization != ''">
            user_organization = #{userOrganization},
        </if>
        <if test="phone != null and phone != ''">
            phone = #{phone},
        </if>
        <![CDATA[ subscription_service = subscription_service | #{subscriptionService} ]]>,
        used_yn = 'Y',
        update_date = NOW()
</insert>

 

반응형

'MyBatis' 카테고리의 다른 글

MyBatis INSERT 쿼리 실행 후 auto_increment 키 값 반환하기  (0) 2023.06.22
MyBatis 마이바티스에서 LIKE문 사용하기  (0) 2022.09.20
[mybatis] springMVC + MyBatis 연동 (스프링MVC + 마이바티스)  (0) 2022.09.10
MyBatis 동적 SQL 사용 (예시. 항목 별 정렬)  (0) 2022.07.21
[mybatis] mybatis 설정 파일  (0) 2022.07.21
    여승철
    여승철

    티스토리툴바