mysql数据更新失败返回值_Mybatis执⾏sql(insert、
update、del。。。
数据库: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 ?,?,? FROM dual);
--或者
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 #{Typ},#{ark},#{} from dual)
insert ALL
into bill (TX_TYP,REMARK,NO) values
(#{Typ},#{ark},#{})
select 1 from dual
为了更直观的查看sql运⾏情况,在l中配置加⼀个setting配置,将执⾏的sql打印到控制台。
定义实体类Bill,属性no,txTyp,remark,其中no为mysql数据库表bill⾃增主键。
Mapper接⼝
//单条插⼊
int add(Bill bill);
//多条插⼊
int mulAdd(List list);
//更新
int upt(Bill bill);
//删除
int del(Bill bill);
insert into bill(TX_TYP,REMARK) values(#{txTyp},#{remark}) insert into bill (TX_TYP,REMARK,NO) VALUES
(#{Typ},#{ark},#{})
mysql下载odbc失败update bill set REMARK=#{remark} where NO=#{no}
delete from bill where TX_TYP=#{txTyp}
开始测试:
①插⼊单条记录:
@Test
public void add(){
Bill bill=new Bill();
bill.setTxTyp("1");
bill.setRemark("试试影响⾏数");
System.out.println(billMapper.add(bill));
}
sql执⾏结果与返回值:成功插⼊⼀条数据,返回影响⾏数:1。
②插⼊多条记录
@Test //测试⼀次性插⼊多条记录
public void mulAdd(){
List list =new ArrayList();
Bill bill1=new Bill();
bill1.setTxTyp("1");
bill1.setRemark("bill1");
Bill bill2=new Bill();
bill2.setTxTyp("1");
bill2.setRemark("bill2");
Bill bill3=new Bill();
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 void upt(){
Bill bill=new Bill();
bill.setTxTyp("1");
bill.setRemark("修改⼀下");
bill.setNo(1);
System.out.println(billMapper.upt(bill));
}
sql执⾏结果与返回值:根据NO字段进⾏更新,数据库表中没有NO=1的⾏,返回影响⾏数:0。修改成表中有的值后,成功返回影响⾏数。
④删除语句
@Test //根据txTyp进⾏删除
public void del(){
Bill bill=new Bill();
bill.setTxTyp("1");
System.out.println(billMapper.del(bill));
}
sql执⾏结果与返回值:先将txTyp设置成数据库中没有的值txTyp=a,执⾏后返回影响⾏数为0;设置为有4条记录的txTyp=1,执⾏后返回影响结果为4,成功删除4条记录。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论