mybatis返回值为int_Mybatis 中执行 insert、update、delete,Dao 层返回 int 数据的意义...

Mybatis 的过程中对执行 sql 的返回值的分析

结论

mybatis 执行 insert,update,delete 返回的都是实际操作影响的行数

insert:  插入n条记录,返回影响行数n。(n>=1,n为0时实际为插入失败)

update: 更新n条记录,返回影响行数n。(n>=0)

delete: 删除n条记录,返回影响行数n。(n>=0)

示例

insert

insert into bill (TX_TYP,REMARK,NO) VALUES (?,?,?) , (?,?,?) , (?,?,?) ;

insert

into bill (TX_TYP,REMARK,NO)

(SELECT #{bill.txTyp},#

{bill.remark},#{bill.no} from dual)

insert

ALL

into 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 接口

//单条插入

int add(Bill bill); //多条插入

int mulAdd(List list); //更新

int upt(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}

测试

1、插入单条记录:

@Test

public void add(){

Bill bill=new Bill();

bill.setTxTyp("1");

bill.setRemark("试试影响行数");

System.out.println(billMapper.add(bill));

}

sql 执行结果与返回值:成功插入一条数据,返回影响行数:1。

2、插入多条记录

@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 执行出错,抛出异常,此时未成功插入记录。

3、更新语句

@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。修改成表中有的值后,成功返回影响行数。

4、删除语句

@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 条记录。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值