数据库: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条记录。

mysql delete返回值_Mybatis执行sql(insert、update、delete)返回值问题相关推荐

  1. 内容必须匹配 (cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update*|delete*|selec

    元素类型为 "mapper" 的内容必须匹配 "(cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update ...

  2. MySQL数据库应用———修改表中内容INSERT/UPDATE/DELETE

    插入.更新.删除表中数据 1.表格中插入数据内容 insert into 语法规则为: INSERT INTO 表名 (字段名) VALUES (内容); 举例: insert into tb_nam ...

  3. 元素类型为 mapper 的内容必须匹配 (cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update*|delete*|selec

    在配置ssm框架的时候,写mapper映射文件的时候,总是会想写一些注解. 可是在编译的时候会出现这个bug,是因为在前面写了注释.导致了执行顺序的问题.需要把一些注释删掉,就可以正常执行了. 像这样 ...

  4. 元素类型为 “mapper“ 的内容必须匹配 “(cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update*|delete*|selec

    一.报错图片 二.解决 出现这个问题原因有很多,如注释不规范,或者里面多写了多余符号.简而言之,就是.xml文件书写不规范. 比如我,就是这里多写了符号 三.解决思路 本篇文章想吐槽的点在这里 结合最 ...

  5. MyBatis中提示:元素类型为 mapper 的内容必须匹配 (cache-ref|cache|resultMap*|parameterMap*|sql*|insert*|update*|de

    场景 整合MyBatis后运行项目提示: 元素类型为 "mapper" 的内容必须匹配 "(cache-ref|cache|resultMap*|parameterMap ...

  6. SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)

    SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MS ...

  7. mysql删除语句事务_事务用来管理 insert,update,delete 语句

    MySQL 事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数 ...

  8. linux mysql 事务_linux下mysql Insert update delete 事务 用户管理

    linux下mysql Insert update delete  事务 用户管理 1.INSERT插入语句格式: INSERT INTO tb_name (字段1, 字段2, ...) VALUES ...

  9. 练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。

    练习2-6 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变. 参考代码如 ...

最新文章

  1. 百度搜索引擎广告SEM调用架构示意图
  2. CODEVS 3288 积木大赛
  3. MariaDB三种方法安装及多实例实现
  4. IPC$连接常见问答
  5. MAC电脑常用效率工具推荐
  6. C++(STL):22 ---序列式容器queue使用
  7. docker下使用redis
  8. DesignPattern_Java:设计模式分类和设计原则
  9. 纯Java代码实现 企业微信钉钉 机器人群+告警
  10. android holder 一定要内部类吗,Android ViewHolder
  11. rust服务器显示长度,rust服务器设置倍率
  12. 消息总线/消息中间件/消息队列/服务总线
  13. 测试用例(等价类法、边界值法、因果图法、判定表法、场景法、正交试验法、功能图法)
  14. 《逆袭大学——传给IT学子正能量》一审稿目录
  15. python 爬取NBA中国官网球员数据
  16. 直接反投影 matlab,直接反投影法.ppt
  17. Java/计算银行利率
  18. 全局壁纸美化v3.0安卓版
  19. 互联网快讯:龙佰集团冲刺港交所;极米Z6X Pro、极米H3S持续热销;京东物流调集3246人增援上海
  20. 基于STM32设计智能称重系统(华为云IOT)

热门文章

  1. 【客户下单】后台系统自动分单成功生成工单发送短信
  2. 导入myql库的操作方式
  3. microsoft已暂时停用你的用户_Windows10 20年10月重大更新来了,但它已存在问题
  4. thinkphp5/phpstudy分析入口文件index.php及localhost和配置域名访问网站根目录www
  5. python随机取列表元素_python random从集合中随机选择元素
  6. sizeof和strlen()区别
  7. int类型存小数 mysql_MySQL面试题-数据类型
  8. python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...
  9. mysql binlog2sql_MySQL数据闪回 binlog2sql
  10. 007-流程控制 if 语句