MyBatis批量增删改的另外一种思路(推荐)
零、传统拼接SQL语句的弊端
一、新思路
<!--
单独配置一个执行JDBC批量操作的session,底层等于sqlSessionFactory.openSession(ExecutorType.BATCH);
底层使用org.apache.ibatis.executor.BatchExecutor作为执行引擎
-->
<bean id="batchSqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
<constructor-arg index="1" value="BATCH"/>
</bean>
/** 注入批处理SqlSessionTemplate */
@Autowired
private SqlSessionTemplate batchSqlSessionTemplate; //这里的Transactionl一定要加,底层实现是命中SQL和Statement,必须使用的是同一个Connection
/**
* 批量 insert
* @param models
* @return
*/
@Transactional
public int batchcInsert(List<Model> models){
int result = 0;
BaseMapper<Model> modelMapper = (BaseMapper<Model>) batchSqlSessionTemplate.getMapper(mapperClass);
for (Model model:models) {
result += modelMapper.insert(model);
}
return result;
} //这里的Transactionl一定要加,底层实现是命中SQL和Statement,必须使用的是同一个Connection
/**
* 批量update
* @param models
* @return
*/
@Transactional
public int batchcUpdate(List<Model> models){
BaseMapper<Model> modelMapper = (BaseMapper<Model>) batchSqlSessionTemplate.getMapper(mapperClass);
int result = 0;
for (Model model:models) {
result += modelMapper.update(model);
}
return result;
} // 批量删除delete
MyBatis批量增删改的另外一种思路(推荐)的更多相关文章
- MyBatis批量增删改查操作
前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作.前文地址:http://blog.csdn.net/mahoking/article/details/43673741 ...
- 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。
1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...
- entity framework 5 批量增删改效率优化
对于数据的批量增删改最慢的就是操作一条就提交一次事务. 以下是对增删改操作的优化测试 同样的300条数据 批量新增只提交一次事务 用时:10673.5444ms 批量新增只提交一次事务并把contex ...
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...
- MYSQL冷知识——ON DUPLICATE KEY 批量增删改
一 有个需求要批量增删改,并且是混合的,也就是仅不存在才增. 删简单,因为有个deleteStaute之类的字段,删除本质上就是就是一个修改 所以就是实现批量混合增改,然而组长说mysql不支持混合增 ...
- 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
- Elasticsearch学习笔记(十)批量查询mget、批量增删改bulk
一.批量查询 mget GET /_mget { "docs":[ { "_index":" ...
- Elasticsearch由浅入深(六)批量操作:mget批量查询、bulk批量增删改、路由原理、增删改内部原理、document查询内部原理、bulk api的奇特json格式
mget批量查询 批量查询的好处就是一条一条的查询,比如说要查询100条数据,那么就要发送100次网络请求,这个开销还是很大的如果进行批量查询的话,查询100条数据,就只要发送1次网络请求,网络请求的 ...
- 从0开始完成SpringBoot+Mybatis实现增删改查
1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...
随机推荐
- Beginning SDL 2.0(3) SDL介绍及BMP渲染
SDL是一个跨平台的多媒体库.为了实现跨平台,SDL提供了一个简单的界面库抽象,比如提供了SDL_Window用于表示窗口句柄,SDL_Surface.SDL_Texture.SDL_Renderer ...
- MDK 的编译过程及文件类型全解
MDK 的编译过程及文件类型全解 ------(在arm9的开发中,这些东西都是我们自己搞定的,但是在windows上,IDE帮我们做好了,了解这些对深入开发是很有帮助的,在有arm9开发的基础上,下 ...
- 2. 知识图谱-命名实体识别(NER)详解
1. 通俗易懂解释知识图谱(Knowledge Graph) 2. 知识图谱-命名实体识别(NER)详解 3. 哈工大LTP解析 1. 前言 在解了知识图谱的全貌之后,我们现在慢慢的开始深入的学习知识 ...
- Faiss教程:入门
Faiss处理固定维度d的数据,矩阵每一行表示一个向量,每列表示向量的一项.Faiss采用32-bit浮点型存储. 假设xb为数据集,维度为\(nb\times{d}\):xq是查询数据,维度为\(n ...
- ssm框架结合axis2实例步骤
本文亲测: 1.从官网下载axis2相关api,地址是:http://axis.apache.org/axis2/java/core/download.html,我下载的是axis2-1.7.6-bi ...
- 轻松学习JavaScript二十七:DOM编程学习之事件模型
在介绍事件模型之前,我们先来看什么是事件和什么是event对象. 一事件介绍 JavaScript事件是由訪问Web页面的用户引起的一系列操作,使我们有能力创建动态页面.事件是能够被 JavaScri ...
- [openssl]openssl特定版本安装
卸载旧版本 OpenSSL1. apt-get purge openssl2. rm -rf /etc/ssl #删除配置文件编译与安装 OpenSSLprefix 是安装目录,openssldir ...
- opencv 中affine函数实现旋转和平移
图像旋转和平移是图像处理中常用的一种操作,opencv2和opencv3中对图像的旋转和平移都是通过仿射变换函数cv::warpAffine()来实现的. 1.图像的旋转 图像的旋转具体实现分为两步: ...
- 【转】MySQL count(*)速度慢优化
select count(*)是MySQL中用于统计记录行数最常用的方法. count方法可以返回表内精确的行数,每执行一次都会进行一次全表扫描, 以避免由于其他连接进行delete和insert引起 ...
- [Intellij] Intellij IDEA 使用中遇见的问题
问题集锦 [IntelliJ IDEA14 + tomcat 设置热部署] 点击deployment查看Deploy at the server startup 中tomcat每次所运行的包是 xxx ...