mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题
數據庫:Mysql
在使用mybatis的過程中對執行sql的返回值產生疑問,順手記錄一下。
結論:
insert:? ?插入n條記錄,返回影響行數n。(n>=1,n為0時實際為插入失敗)
update:更新n條記錄,返回影響行數n。(n>=0)
delete: 刪除n條記錄,返回影響行數n。(n>=0)
驗證:
插入多條數據,mysql中可以使用如下sql:
insert into bill (TX_TYP,REMARK,NO) VALUES (?,?,?) , (?,?,?) , (?,?,?) ;
而對oracle的操作略有不同(兩種方式 以及對應的mapper配置):
INSERT INTO BILL(NO,TX_TYP,REMARK) (SELECT ?,?,? FROM dual) UNION ALL (SELECT ?,?,? FROMdual);--或者
INSERT ALL INTO bill(NO,TX_TYP,REMARK) values ( ?,?,? ) INTO bill(NO,TX_TYP,REMARK) values ( ?,?,? ) SELECT 1 FROM dual;
insert into bill (TX_TYP,REMARK,NO)(SELECT #{bill.txTyp},#{bill.remark},#{bill.no} from dual)
insert ALLinto bill (TX_TYP,REMARK,NO) values
(#{bill.txTyp},#{bill.remark},#{bill.no})select 1 from dual
為了更直觀的查看sql運行情況,在mybatis-config.xml中配置加一個setting配置,將執行的sql打印到控制臺。
定義實體類Bill,屬性no,txTyp,remark,其中no為mysql數據庫表bill自增主鍵。
Mapper接口
//單條插入
intadd(Bill bill);//多條插入
intmulAdd(List list);//更新
intupt(Bill bill);//刪除
int del(Bill bill);
Mapper.xml
insert into bill(TX_TYP,REMARK) values(#{txTyp},#{remark})
insert into bill (TX_TYP,REMARK,NO) VALUES(#{bill.txTyp},#{bill.remark},#{bill.no})
update bill set REMARK=#{remark} where NO=#{no}
delete from bill where TX_TYP=#{txTyp}
開始測試:
①插入單條記錄:
@Testpublic voidadd(){
Bill bill=newBill();
bill.setTxTyp("1");
bill.setRemark("試試影響行數");
System.out.println(billMapper.add(bill));
}
sql執行結果與返回值:成功插入一條數據,返回影響行數:1。
②插入多條記錄
@Test //測試一次性插入多條記錄
public voidmulAdd(){
List list=new ArrayList();
Bill bill1=newBill();
bill1.setTxTyp("1");
bill1.setRemark("bill1");
Bill bill2=newBill();
bill2.setTxTyp("1");
bill2.setRemark("bill2");
Bill bill3=newBill();
bill3.setTxTyp("1");
bill3.setRemark("bill3");
list.add(bill1);
list.add(bill2);
list.add(bill3);
System.out.println(billMapper.mulAdd(list));
}
sql執行結果與返回值:成功插入三條數據,返回影響行數:3。
插入多條記錄時,如果有記錄主鍵沖突,則sql執行出錯,拋出異常,此時未成功插入記錄。
③更新語句
@Test //根據no進行更新
public voidupt(){
Bill bill=newBill();
bill.setTxTyp("1");
bill.setRemark("修改一下");
bill.setNo(1);
System.out.println(billMapper.upt(bill));
}
sql執行結果與返回值:根據NO字段進行更新,數據庫表中沒有NO=1的行,返回影響行數:0。修改成表中有的值后,成功返回影響行數。
④刪除語句
@Test //根據txTyp進行刪除
public voiddel(){
Bill bill=newBill();
bill.setTxTyp("1");
System.out.println(billMapper.del(bill));
}
sql執行結果與返回值:先將txTyp設置成數據庫中沒有的值txTyp=a,執行后返回影響行數為0;設置為有4條記錄的txTyp=1,執行后返回影響結果為4,成功刪除4條記錄。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 主从 keepalived_
- 下一篇: mysql md5版本校验_通过MD5校