MyBatis之insert(插入和更新)


近來在改造一個同事的數據入庫項目,發現了一些問題,其中就因為數據庫聯合主鍵的緣故導入新增的數據不能入庫(這個新增的入庫數據,其實對應的數據表就存在這樣的數據,她那邊沒有針對此進行判斷有則更新,僅僅是無則插入)。
基於這個問題,我不想寫太多的代碼(查這條數據是否存在,存在則更新這樣的),只想用最少的代碼量解決這個問題,通過搜索我找到了這樣的方法,無需寫很多代碼,就是一條SQL就能搞定。

1.針對單條插入或更新而言,SQL可以這樣寫(對應的XML里面的SQL)

以我博客為例:

INSERT INTO `wp_users` (
                   `ID`,
                   `user_login`,
                   `user_pass`,
                   `user_nicename`,
                   `user_email`,
                   `user_url`,
                   `user_registered`,
                   `user_activation_key`,
                   `user_status`
                   `display_name`
                   )
           VALUES
               (
               #{ID},
               #{user_login},
               #{user_pass},
               #{user_nicename},
               #{user_email},
               #{user_url},
               #{user_registered},
               #{user_activation_key},
               #{user_status},
               #{display_name}
               )
                   ON DUPLICATE KEY UPDATE
       ID = VALUES(ID),
       user_login = VALUES(user_login),
       user_pass = VALUES(user_pass),
       user_nicename = VALUES (user_nicename),
       user_email = VALUES (user_email),
       user_url = VALUES (user_url),
       user_registered = VALUES (user_registered),
       user_activation_key = VALUES (user_activation_key),
       user_status = VALUES (user_status),
       display_name = VALUES (display_name)

2.針對批量插入或更新而言可以這么寫(對應的XML里面的SQL)

以我博客為例:

INSERT INTO `wp_users` (
                    `ID`,
                    `user_login`,
                    `user_pass`,
                    `user_nicename`,
                    `user_email`,
                    `user_url`,
                    `user_registered`,
                    `user_activation_key`,
                    `user_status`
                    `display_name`
                    )
            VALUES
            
    <foreach collection="list" item="item" index="index" separator=",">

                (
                #{item.ID},
                #{item.user_login},
                #{item.user_pass},
                #{item.user_nicename},
                #{item.user_email},
                #{item.user_url},
                #{item.user_registered},
                #{item.user_activation_key},
                #{item.user_status},
                #{item.display_name}
                )
    </foreach>
                    ON DUPLICATE KEY UPDATE
        ID = VALUES(ID),
        user_login = VALUES(user_login),
        user_pass = VALUES(user_pass),
        user_nicename = VALUES (user_nicename),
        user_email = VALUES (user_email),
        user_url = VALUES (user_url),
        user_registered = VALUES (user_registered),
        user_activation_key = VALUES (user_activation_key),
        user_status = VALUES (user_status),
        display_name = VALUES (display_name)

參考資料如下:
mybatis對mysql進行插入或者更新(含批量)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM