前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作。前文地址:http://blog.csdn.net/mahoking/article/details/43673741
批量增加操作步骤
1. 在接口UserMapper中添加批量增加方法。
-
/**
-
* 批量增加操作
-
* @param users
-
*/
-
public void batchInsertUsers(List<User> users);
2.在User.xml中添加批量增加操作的配置。
-
<!-- 批量增加操作 -->
-
<insert id="batchInsertUsers" parameterType="java.util.List">
-
insert into mhc_user(userName,password) values
-
<foreach collection="list" item="item" index="index" separator=",">
-
(#{item.userName},#{item.password})
-
</foreach>
-
</insert>
由于批量增加的方法中参数为List,所以parameterType的值为java.util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量增加方法。
-
/**
-
* 批量增加操作
-
* @param users
-
*/
-
public static void batchInsertUsers(List<User> users){
-
-
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
-
SqlSession session = ssf.openSession();
-
-
try {
-
UserMapper userMapper = session.getMapper(UserMapper.class);
-
userMapper.batchInsertUsers(users);
-
session.commit();
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
MyBatisUtil.closeSession(session);
-
}
-
}
批量删除操作步骤
1. 在接口UserMapper中添加删除增加方法。
-
/**
-
* 批量删除操作
-
* @param ids
-
*/
-
public void batchDeleteUsers(List ids);
2.在User.xml中添加批量增加操作的配置。
-
<!-- 批量删除操作 -->
-
<delete id="batchDeleteUsers" parameterType="java.util.List">
-
delete from mhc_user where id in
-
<foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
-
#{item}
-
</foreach>
-
</delete>
由于批量删除的方法中参数为List,所以parameterType的值为java.util.List。
3. 在批量操作的工具类BatchDataUtils中编写批量删除方法。
-
/**
-
* 批量删除操作
-
* @param ids
-
*/
-
public static void batchDeleteUsers(List ids){
-
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
-
SqlSession session = ssf.openSession();
-
-
try {
-
UserMapper userMapper = session.getMapper(UserMapper.class);
-
userMapper.batchDeleteUsers(ids);
-
session.commit();
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
MyBatisUtil.closeSession(session);
-
}
-
}
批量查询操作步骤
1. 在接口UserMapper中添加批量查询方法。
-
/**
-
* 批量查询操作
-
* @param ids
-
* @return
-
*/
-
public List<User> batchSelectUsers(List ids);
2.在User.xml中添加批量查询操作的配置。
-
<!-- 批量查询操作 -->
-
<select id="batchSelectUsers" resultType="User">
-
select *
-
from mhc_user where id in
-
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
-
#{item}
-
</foreach>
-
</select>
由于批量查询的方法的返回为List<User>,所以resultType的值为User,即com.mahaochen.mybatis.domain.User。详见configuration.xml中。
-
<typeAliases>
-
<!-- 注册实体Bean -->
-
<typeAlias type="com.mahaochen.mybatis.domain.User" alias="User"/>
-
</typeAliases>
3. 创建批量操作的工具类BatchDataUtils,编写批量查询方法。
-
/**
-
* 批量查询操作
-
* @param ids
-
* @return
-
*/
-
public static List<User> batchSelectUsers(List ids){
-
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
-
SqlSession session = ssf.openSession();
-
List<User> users = null;
-
try {
-
UserMapper userMapper = session.getMapper(UserMapper.class);
-
users = userMapper.batchSelectUsers(ids);
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
MyBatisUtil.closeSession(session);
-
}
-
return users;
-
}
-
}
批量更细操作步骤
1. 在接口UserMapper中添加批量增加方法。
-
/**
-
* 批量更新操作
-
* @param ids
-
*/
-
public void batchUpdateUsers(List users);
2.在User.xml中添加批量更新操作的配置。
-
<!-- 批量更新操作 -->
-
<!-- FOR MySQL mysql需要数据库连接配置&allowMultiQueries=true
-
例如:jdbc:mysql://127.0.0.1:3306/mhc?allowMultiQueries=true -->
-
<update id="batchUpdateUsers" parameterType="java.util.List">
-
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
-
update mhc_user
-
<set>
-
userName = #{item.userName}, password = #{item.password}
-
</set>
-
where id = #{item.id}
-
</foreach>
-
</update>
-
-
<!-- 【扩展知识】 FOR Oracle 有以下三种方式-->
-
<!-- 方式一 -->
-
<update id="batchUpdateUsers01" parameterType="java.util.List">
-
<foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";" >
-
update mhc_user
-
<set>
-
userName = #{item.userName}, password = #{item.password}
-
</set>
-
where id = #{item.id}
-
</foreach>
-
</update>
-
<!-- 方式二 -->
-
<update id="batchUpdateUsers02" parameterType="java.util.List">
-
<foreach collection="list" item="item" index="index" open="begin" close="end;" separator="" >
-
update mhc_user
-
<set>
-
userName = #{item.userName}, password = #{item.password}
-
</set>
-
where id = #{item.id};
-
</foreach>
-
</update>
-
<!-- 方式三 -->
-
<update id="batchUpdateUsers03" parameterType="java.util.List">
-
begin
-
<foreach collection="list" item="item" index="index" separator="" >
-
update mhc_user
-
<set>
-
userName = #{item.userName}, password = #{item.password}
-
</set>
-
where id = #{item.id};
-
</foreach>
-
end;
-
</update>
由于批量更新的方法中参数为List,所以parameterType的值为java.util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量更新方法。
-
/**
-
* 批量更新操作
-
* @param users
-
*/
-
public static void batchUpdateUsers(List users){
-
SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
-
SqlSession session = ssf.openSession();
-
-
try {
-
UserMapper userMapper = session.getMapper(UserMapper.class);
-
userMapper.batchUpdateUsers(users);
-
session.commit();
-
} catch (Exception e) {
-
e.printStackTrace();
-
} finally {
-
MyBatisUtil.closeSession(session);
-
}
-
}
MyBatis批量增删改查操作的更多相关文章
-
学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作
一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...
-
Mybatis之增删改查操作
准备工作 建立整体项目目录 新建一个java工程,创建如下工程目录 其中com.kang.pojo中存放pojo类,com.kang.test中存放测试类. 源码目录config中存放Mybatis的 ...
-
MyBatis的增删改查操作
搭建好mybatis之后 进行对数据库的操作 添加语句 在映射文件中添加语句 insert into student(name,age,score) values(#{name},#{age},#{s ...
-
MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多
一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.D ...
-
从0开始完成SpringBoot+Mybatis实现增删改查
1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...
-
python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,";$";的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
-
后盾网lavarel视频项目---lavarel使用模型进行增删改查操作
后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...
-
django-数据库的增删改查操作
django-数据库的增删改查操作 1.添加用户记录 def login(request): 增加用户记录 使用save()方法来增加记录 username = UserInfo(username=' ...
-
Jmeter对数据库批量增删改查
本文主要的内容是使用Jmeter对数据库进行数据的操作,包括单条语句的增删改查,多条语句的增删改查,本文主要介绍操作流程,关于流程的运作原理,对原理感兴趣的同学可自行查阅资料. 首先需要准备一个数据库 ...
随机推荐
-
Linux下java进程CPU占用率高-分析方法
今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4% mem:14.6% ...
-
ios开发中的Swift面向对象
iOS在现代计算机语言中,面向对象是非常重要的特性,Swift语言也提供了面向对象的支持.而且在Swift语言中,不仅类具有面向对象特性,结构体和枚举也都具有面向对象特性. 1.Swift中的类和结构 ...
-
OOM解决方案
应用程序OOM异常永远都是值得关注的问题.通常这一块也是程序这中的重点之一 首先,OOM就是内存溢出,即Out Of Memory.也就是说内存占有量超过了VM所分配的最大. 怎么解决OOM,通常OO ...
-
nginx无法启动: libpcre.so.1/libpcre.so.0: cannot open shared object file解决办法
NGINX启动时提示错误: /usr/local/nginx/sbin/nginx -t/usr/local/nginx/sbin/nginx: error while loading shared ...
-
一个iOS6系统bug+一个iOS7系统bug
先看实际工作中遇到的两个bug:(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:
-
tf.matmul()和tf.multipy()的区别
首先我们分析一下下面的代码: import tensorflow as tf import numpy as np a=tf.constant([[1., 2., 3.],[4., 5., 6.]]) ...
-
C# List left join
public class Test1 { public int ID { get; set; } public string Name { get; set; } } public class Tes ...
-
TCP/IP协议族、版本以及编址机制
TCP/IP协议族简称TCP/IP.这么命名是因为该协议家族中的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准.TCP/IP提供点对点的链接机制,将数据应该如何封装, ...
-
「题目代码」P1066~P1070(Java)
P1066 谭浩强C语言(第三版)习题8.6 import java.util.*; import java.io.*; import java.math.*; import java.lang.Ch ...
-
LVS NAT,DR,TUN三种负载原理
负载均衡简单介绍 用通俗的话来说负载均衡,就是通过不同的调度机制将用户的请求分派到后端不同的服务器.缓解服务器的请求压力,实现负载均衡的方案有多种,下面简单说说了解的几种方式: DNS 负载:利用DN ...