首页 > 其他分享 >026.MyBatis批处理

026.MyBatis批处理

时间:2022-11-20 14:13:36浏览次数:35  
标签:session Exception goods 批处理 list item 026 MyBatis new

1. goods.xml

<!--INSERT INTO table-->
<!--VALUES ("a" , "a1" , "a2"),("b" , "b1" , "b2"),(....)-->
<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO t_goods(title, sub_title, original_cost, current_price, discount, is_free_delivery, category_id)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(#{item.title},#{item.subTitle}, #{item.originalCost}, #{item.currentPrice}, #{item.discount}, #{item.isFreeDelivery}, #{item.categoryId})
</foreach>
</insert>


<!--in (1901,1902)-->
<delete id="batchDelete" parameterType="java.util.List">
DELETE FROM t_goods WHERE goods_id in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</delete>

2.测试用例

 /**
* 批量插入测试
* @throws Exception
*/
@Test
public void testBatchInsert() throws Exception {
SqlSession session = null;
try {
long st = new Date().getTime();
session = MyBatisUtils.openSession();
List list = new ArrayList();
for (int i = 0; i < 10000; i++) {
Goods goods = new Goods();
goods.setTitle("测试商品");
goods.setSubTitle("测试子标题");
goods.setOriginalCost(200f);
goods.setCurrentPrice(100f);
goods.setDiscount(0.5f);
goods.setIsFreeDelivery(1);
goods.setCategoryId(43);
//insert()方法返回值代表本次成功插入的记录总数

list.add(goods);
}
session.insert("goods.batchInsert", list);
session.commit();//提交事务数据
long et = new Date().getTime();
System.out.println("执行时间:" + (et - st) + "毫秒");
// System.out.println(goods.getGoodsId());
} catch (Exception e) {
if (session != null) {
session.rollback();//回滚事务
}
throw e;
} finally {
MyBatisUtils.closeSession(session);
}
}

/**
* 10000次数据插入对比测试用例
* @throws Exception
*/
@Test
public void testInsert1() throws Exception {
SqlSession session = null;
try{
long st = new Date().getTime();
session = MyBatisUtils.openSession();
List list = new ArrayList();
for(int i = 0 ; i < 10000 ; i++) {
Goods goods = new Goods();
goods.setTitle("测试商品");
goods.setSubTitle("测试子标题");
goods.setOriginalCost(200f);
goods.setCurrentPrice(100f);
goods.setDiscount(0.5f);
goods.setIsFreeDelivery(1);
goods.setCategoryId(43);
//insert()方法返回值代表本次成功插入的记录总数

session.insert("goods.insert" , goods);
}

session.commit();//提交事务数据
long et = new Date().getTime();
System.out.println("执行时间:" + (et-st) + "毫秒");
// System.out.println(goods.getGoodsId());
}catch (Exception e){
if(session != null){
session.rollback();//回滚事务
}
throw e;
}finally {
MyBatisUtils.closeSession(session);
}
}

/**
* 批量删除测试
* @throws Exception
*/
@Test
public void testBatchDelete() throws Exception {
SqlSession session = null;
try {
long st = new Date().getTime();
session = MyBatisUtils.openSession();
List list = new ArrayList();
list.add(1920);
list.add(1921);
list.add(1922);
session.delete("goods.batchDelete", list);
session.commit();//提交事务数据
long et = new Date().getTime();
System.out.println("执行时间:" + (et - st) + "毫秒");
// System.out.println(goods.getGoodsId());
} catch (Exception e) {
if (session != null) {
session.rollback();//回滚事务
}
throw e;
} finally {
MyBatisUtils.closeSession(session);
}
}


 

标签:session,Exception,goods,批处理,list,item,026,MyBatis,new
From: https://www.cnblogs.com/LLL0617/p/16908359.html

相关文章

  • 025.MyBatis整合C3P0连接池
    1.pom.xml<dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.4</version>......
  • mybatis-plus与springboot整合
    一、mybatis开发问题需要自己写实体需要自己写xml文件和对应的xml中的sql那是不是存在一种对于通用的功能做很好支持的插件功能:mybatis-plus二、解决的问题:代码生......
  • MyBatis
    MyBatis-第一章 ORM(ObjectRelationalMapping) 设计模式,先有思想,后有实现对象关系映射,是一种数据持久化技术。它在对象模型和关系型数据库之间建立起对应关系,并且......
  • MyBatis2
    MyBatis-第二章Dao接口引入1.修改mapper文件的namespace,对应接口类的全路径2.创建BookDao.java接口类3.接口方法名对应mapper的SQLid4.定义反参和入参(如有)......
  • MyBatis3
    MyBatis-第三章 log4j日志记录可以记录不同级别的日志信息,以备排错和后续信息参考1.配置log4j.properties配置文件,放置在根目录下日志全局设置:log4j.rootLogger=lev......
  • Mybatis 入门实战(2)--简单使用
    本文主要介绍Mybatis的实际使用,相关的环境及软件信息如下:Mybatis3.5.11。1、工程整体结构这里使用Maven来构建样例工程,工程目录结构如下:2、引入依赖<dependency......
  • mybatis学习第六部分:Mybatis注解开发
    6.1  MyBatis的常⽤注解这⼏年来注解开发越来越流⾏,Mybatis也可以使⽤注解开发⽅式,这样我们就可以减少编写Mapper映射⽂件了。我们先围绕⼀些基本的CRUD来学习,再学习......
  • mybatis学习第五部分:Mybatis复杂映射开发
    5.1⼀对⼀查询5.1.1⼀对⼀查询的模型⽤户表和订单表的关系为,⼀个⽤户有多个订单,⼀个订单只从属于⼀个⽤户⼀对⼀查询的需求:查询⼀个订单,与此同时查询出该订单所属的⽤......
  • mybatis学习第四部分: Mybatis配置⽂件深⼊
    4.1  核⼼配置⽂件SqlMapConfig.xml4.1.1 MyBatis核⼼配置⽂件层级关系   4.2  MyBatis常⽤配置解析1)environments标签数据库环境的配置,⽀持多环境配置......
  • Mybatis出现Caused by: net.sf.jsqlparser.parser.ParseException: ....异常
    今天在开发项目中遇到了一个奇怪的异常,记录一下把!异常信息如下(截取了主要的部分)Causedby:net.sf.jsqlparser.parser.ParseException:Encountered""TOP""top""at......