一. 總結
1. MyBatis插入數據
Mapper文件的SQL語句 | 場景 | 執行結果 | Dao層返回值 | 主鍵是否自增 | 瀏覽器訪問示例 |
---|---|---|---|---|---|
insert into | 正常插入 | 程序正常執行 | 1 | 主鍵自增 | |
insert into | 唯一索引重複 | ERROR(DuplicateKeyException),Duplicate entry ‘xixi1’ for key 'name’) | - | 主鍵不自增 | http://localhost:8080/insertUser?id=26&name=xixi1&age=21 |
insert into | 主鍵重複 | ERROR(DuplicateKeyException),Duplicate entry ‘25’ for key 'PRIMARY’ | - | 主鍵不自增 | http://localhost:8080/insertUser?id=25&name=xixi2&age=21 |
insert ignore into | 正常插入 | 程序正常執行 | 1 | 主鍵自增 | |
insert ignore into | 唯一索引重複 | 程序正常執行 | 0 | 主鍵不自增 | |
insert ignore into | 主鍵重複 | 程序正常執行 | 0 | 主鍵不自增 | |
replace into | 唯一索引重複 | 程序正常運行 | 2 | 刪除舊記錄,插入新記錄 | |
replace into | 主鍵重複 | 程序正常運行 | 2 | 直接替換該行記錄,id不會改變 | |
replace into | 主鍵和唯一索引都不重複 | 程序正常運行 | 1 | 新增一條記錄 | http://localhost:8080/replaceNamesDO2?id=30&name=xixi7&age=189 |
2. MyBatis更新數據
Mapper文件的SQL語句 | 場景 | 執行結果 | Dao層返回值 | 主鍵是否自增 | 示例 |
---|---|---|---|---|---|
update | 正常更新 | 更新成功 | 1 | - | |
update | 舊數據和要更新的值完全一樣 | 程序正常執行 | 1 | - | |
update | 沒有找到該條數據 | 程序正常執行 | 0 | - | |
update | 修改的唯一索引字段已有值 | ERROR(DuplicateKeyException), Duplicate entry ‘xixi1’ for key 'name’ | - | - |
3. MyBatis刪除數據
Mapper文件的SQL語句 | 場景 | 執行結果 | Dao層返回值 | 主鍵是否自增 | 示例 |
---|---|---|---|---|---|
delete | 正常刪除數據 | 刪除成功 | 1 | - | |
delete | 沒有該條記錄 | 程序正常運行 | 0 | - |
二. MyBatis與MySQL執行增刪改操作的區別
- 插入操作:Mysq在執行插入操作(insert或insert ignore)時,如果唯一索引重複,無論SQL執行結果,主鍵仍會自增。
- Mysql中執行insert:執行報錯,主鍵自增;
- Mysql中執行insert ignore:執行告警,主鍵自增。
- 更新操作:沒有找到該條數據時,原生sql返回0行受影響,MyBatis返回結果爲1。
- Mysql:執行結果爲受影響的行數;
- MyBatis:執行結果爲被匹配的影響行數。