MyBatis批量增删改查操作

时间:2022-09-23 19:32:41
 

前文我们介绍了MyBatis基本的增删该查操作,本文介绍批量的增删改查操作。前文地址:http://blog.csdn.net/mahoking/article/details/43673741

批量增加操作步骤

1. 在接口UserMapper中添加批量增加方法。

  1.  
    /**
  2.  
    * 批量增加操作
  3.  
    * @param users
  4.  
    */
  5.  
    public void batchInsertUsers(List<User> users);

2.在User.xml中添加批量增加操作的配置。

  1.  
    <!-- 批量增加操作 -->
  2.  
    <insert id="batchInsertUsers" parameterType="java.util.List">
  3.  
    insert into mhc_user(userName,password) values
  4.  
    <foreach collection="list" item="item" index="index" separator=",">
  5.  
    (#{item.userName},#{item.password})
  6.  
    </foreach>
  7.  
    </insert>

由于批量增加的方法中参数为List,所以parameterType的值为java.util.List。

3. 创建批量操作的工具类BatchDataUtils,编写批量增加方法。

  1.  
    /**
  2.  
    * 批量增加操作
  3.  
    * @param users
  4.  
    */
  5.  
    public static void batchInsertUsers(List<User> users){
  6.  
     
  7.  
    SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
  8.  
    SqlSession session = ssf.openSession();
  9.  
     
  10.  
    try {
  11.  
    UserMapper userMapper = session.getMapper(UserMapper.class);
  12.  
    userMapper.batchInsertUsers(users);
  13.  
    session.commit();
  14.  
    } catch (Exception e) {
  15.  
    e.printStackTrace();
  16.  
    } finally {
  17.  
    MyBatisUtil.closeSession(session);
  18.  
    }
  19.  
    }

批量删除操作步骤

1. 在接口UserMapper中添加删除增加方法。

  1.  
    /**
  2.  
    * 批量删除操作
  3.  
    * @param ids
  4.  
    */
  5.  
    public void batchDeleteUsers(List ids);

2.在User.xml中添加批量增加操作的配置。

  1.  
    <!-- 批量删除操作 -->
  2.  
    <delete id="batchDeleteUsers" parameterType="java.util.List">
  3.  
    delete from mhc_user where id in
  4.  
    <foreach collection="list" index="index" item="item" open="(" close=")" separator=",">
  5.  
    #{item}
  6.  
    </foreach>
  7.  
    </delete>

由于批量删除的方法中参数为List,所以parameterType的值为java.util.List。

3. 在批量操作的工具类BatchDataUtils中编写批量删除方法。

  1.  
    /**
  2.  
    * 批量删除操作
  3.  
    * @param ids
  4.  
    */
  5.  
    public static void batchDeleteUsers(List ids){
  6.  
    SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
  7.  
    SqlSession session = ssf.openSession();
  8.  
     
  9.  
    try {
  10.  
    UserMapper userMapper = session.getMapper(UserMapper.class);
  11.  
    userMapper.batchDeleteUsers(ids);
  12.  
    session.commit();
  13.  
    } catch (Exception e) {
  14.  
    e.printStackTrace();
  15.  
    } finally {
  16.  
    MyBatisUtil.closeSession(session);
  17.  
    }
  18.  
    }

批量查询操作步骤

1. 在接口UserMapper中添加批量查询方法。

  1.  
    /**
  2.  
    * 批量查询操作
  3.  
    * @param ids
  4.  
    * @return
  5.  
    */
  6.  
    public List<User> batchSelectUsers(List ids);

2.在User.xml中添加批量查询操作的配置。

  1.  
    <!-- 批量查询操作 -->
  2.  
    <select id="batchSelectUsers" resultType="User">
  3.  
    select *
  4.  
    from mhc_user where id in
  5.  
    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
  6.  
    #{item}
  7.  
    </foreach>
  8.  
    </select>

由于批量查询的方法的返回为List<User>,所以resultType的值为User,即com.mahaochen.mybatis.domain.User。详见configuration.xml中。

  1.  
    <typeAliases>
  2.  
    <!-- 注册实体Bean -->
  3.  
    <typeAlias type="com.mahaochen.mybatis.domain.User" alias="User"/>
  4.  
    </typeAliases>

3. 创建批量操作的工具类BatchDataUtils,编写批量查询方法。

  1.  
    /**
  2.  
    * 批量查询操作
  3.  
    * @param ids
  4.  
    * @return
  5.  
    */
  6.  
    public static List<User> batchSelectUsers(List ids){
  7.  
    SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
  8.  
    SqlSession session = ssf.openSession();
  9.  
    List<User> users = null;
  10.  
    try {
  11.  
    UserMapper userMapper = session.getMapper(UserMapper.class);
  12.  
    users = userMapper.batchSelectUsers(ids);
  13.  
    } catch (Exception e) {
  14.  
    e.printStackTrace();
  15.  
    } finally {
  16.  
    MyBatisUtil.closeSession(session);
  17.  
    }
  18.  
    return users;
  19.  
    }
  20.  
    }

批量更细操作步骤

1. 在接口UserMapper中添加批量增加方法。

  1.  
    /**
  2.  
    * 批量更新操作
  3.  
    * @param ids
  4.  
    */
  5.  
    public void batchUpdateUsers(List users);

2.在User.xml中添加批量更新操作的配置。

  1.  
    <!-- 批量更新操作 -->
  2.  
    <!-- FOR MySQL mysql需要数据库连接配置&allowMultiQueries=true
  3.  
    例如:jdbc:mysql://127.0.0.1:3306/mhc?allowMultiQueries=true -->
  4.  
    <update id="batchUpdateUsers" parameterType="java.util.List">
  5.  
    <foreach collection="list" item="item" index="index" open="" close="" separator=";">
  6.  
    update mhc_user
  7.  
    <set>
  8.  
    userName = #{item.userName}, password = #{item.password}
  9.  
    </set>
  10.  
    where id = #{item.id}
  11.  
    </foreach>
  12.  
    </update>
  13.  
     
  14.  
    <!-- 【扩展知识】 FOR Oracle 有以下三种方式-->
  15.  
    <!-- 方式一 -->
  16.  
    <update id="batchUpdateUsers01" parameterType="java.util.List">
  17.  
    <foreach collection="list" item="item" index="index" open="begin" close=";end;" separator=";" >
  18.  
    update mhc_user
  19.  
    <set>
  20.  
    userName = #{item.userName}, password = #{item.password}
  21.  
    </set>
  22.  
    where id = #{item.id}
  23.  
    </foreach>
  24.  
    </update>
  25.  
    <!-- 方式二 -->
  26.  
    <update id="batchUpdateUsers02" parameterType="java.util.List">
  27.  
    <foreach collection="list" item="item" index="index" open="begin" close="end;" separator="" >
  28.  
    update mhc_user
  29.  
    <set>
  30.  
    userName = #{item.userName}, password = #{item.password}
  31.  
    </set>
  32.  
    where id = #{item.id};
  33.  
    </foreach>
  34.  
    </update>
  35.  
    <!-- 方式三 -->
  36.  
    <update id="batchUpdateUsers03" parameterType="java.util.List">
  37.  
    begin
  38.  
    <foreach collection="list" item="item" index="index" separator="" >
  39.  
    update mhc_user
  40.  
    <set>
  41.  
    userName = #{item.userName}, password = #{item.password}
  42.  
    </set>
  43.  
    where id = #{item.id};
  44.  
    </foreach>
  45.  
    end;
  46.  
    </update>

由于批量更新的方法中参数为List,所以parameterType的值为java.util.List。

3. 创建批量操作的工具类BatchDataUtils,编写批量更新方法。

  1.  
    /**
  2.  
    * 批量更新操作
  3.  
    * @param users
  4.  
    */
  5.  
    public static void batchUpdateUsers(List users){
  6.  
    SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();
  7.  
    SqlSession session = ssf.openSession();
  8.  
     
  9.  
    try {
  10.  
    UserMapper userMapper = session.getMapper(UserMapper.class);
  11.  
    userMapper.batchUpdateUsers(users);
  12.  
    session.commit();
  13.  
    } catch (Exception e) {
  14.  
    e.printStackTrace();
  15.  
    } finally {
  16.  
    MyBatisUtil.closeSession(session);
  17.  
    }
  18.  
    }

MyBatis批量增删改查操作的更多相关文章

  1. 学习MyBatis必知必会(5)~了解myBatis的作用域和生命周期并抽取工具类MyBatisUtil、mybatis执行增删改查操作

    一.了解myBatis的作用域和生命周期[错误的使用会导致非常严重的并发问题] (1)SqlSessionFactoryBuilder [ 作用:仅仅是用来创建SqlSessionFactory,作用 ...

  2. Mybatis之增删改查操作

    准备工作 建立整体项目目录 新建一个java工程,创建如下工程目录 其中com.kang.pojo中存放pojo类,com.kang.test中存放测试类. 源码目录config中存放Mybatis的 ...

  3. MyBatis的增删改查操作

    搭建好mybatis之后 进行对数据库的操作 添加语句 在映射文件中添加语句 insert into student(name,age,score) values(#{name},#{age},#{s ...

  4. MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多

    一.用到的实体类如下: Student.java package com.company.entity; import java.io.Serializable; import java.util.D ...

  5. 从0开始完成SpringBoot&plus;Mybatis实现增删改查

    1.准备知识: 1)需要掌握的知识: Java基础,JavaWeb开发基础,Spring基础(没有Spring的基础也可以,接触过Spring最好),ajax,Jquery,Mybatis. 2)项目 ...

  6. python 全栈开发,Day124&lpar;MongoDB初识&comma;增删改查操作&comma;数据类型&comma;&dollar;关键字以及&dollar;修改器&comma;&quot&semi;&dollar;&quot&semi;的奇妙用法&comma;Array Object 的特殊操作&comma;选取跳过排序&comma;客户端操作&rpar;

    一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...

  7. 后盾网lavarel视频项目---lavarel使用模型进行增删改查操作

    后盾网lavarel视频项目---lavarel使用模型进行增删改查操作 一.总结 一句话总结: 使用模型操作常用方法 查一条:$model=Tag::find($id); 删一条:Tag::dest ...

  8. django-数据库的增删改查操作

    django-数据库的增删改查操作 1.添加用户记录 def login(request): 增加用户记录 使用save()方法来增加记录 username = UserInfo(username=' ...

  9. Jmeter对数据库批量增删改查

    本文主要的内容是使用Jmeter对数据库进行数据的操作,包括单条语句的增删改查,多条语句的增删改查,本文主要介绍操作流程,关于流程的运作原理,对原理感兴趣的同学可自行查阅资料. 首先需要准备一个数据库 ...

随机推荐

  1. Linux下java进程CPU占用率高-分析方法

    今天登陆同事的一台gateway 开始以为hive环境登陆不了了,仔细一看看了下是因为机器很卡,我每次等几秒没登陆就ctrl+c了,看了下是有个java进程cpu:340.4%  mem:14.6%  ...

  2. ios开发中的Swift面向对象

    iOS在现代计算机语言中,面向对象是非常重要的特性,Swift语言也提供了面向对象的支持.而且在Swift语言中,不仅类具有面向对象特性,结构体和枚举也都具有面向对象特性. 1.Swift中的类和结构 ...

  3. OOM解决方案

    应用程序OOM异常永远都是值得关注的问题.通常这一块也是程序这中的重点之一 首先,OOM就是内存溢出,即Out Of Memory.也就是说内存占有量超过了VM所分配的最大. 怎么解决OOM,通常OO ...

  4. nginx无法启动&colon; libpcre&period;so&period;1&sol;libpcre&period;so&period;0&colon; cannot open shared object file解决办法

    NGINX启动时提示错误: /usr/local/nginx/sbin/nginx -t/usr/local/nginx/sbin/nginx: error while loading shared ...

  5. 一个iOS6系统bug+一个iOS7系统bug

    先看实际工作中遇到的两个bug:(1)iPhone Qzone有一个导航栏背景随着页面滑动而渐变的体验,当页面滑动到一定距离时,会改变导航栏上title文本的颜色,但是有一个莫名其妙的bug,如下:

  6. tf&period;matmul&lpar;&rpar;和tf&period;multipy&lpar;&rpar;的区别

    首先我们分析一下下面的代码: import tensorflow as tf import numpy as np a=tf.constant([[1., 2., 3.],[4., 5., 6.]]) ...

  7. C&num; List left join

    public class Test1 { public int ID { get; set; } public string Name { get; set; } } public class Tes ...

  8. TCP&sol;IP协议族、版本以及编址机制

    TCP/IP协议族简称TCP/IP.这么命名是因为该协议家族中的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准.TCP/IP提供点对点的链接机制,将数据应该如何封装, ...

  9. 「题目代码」P1066~P1070(Java)

    P1066 谭浩强C语言(第三版)习题8.6 import java.util.*; import java.io.*; import java.math.*; import java.lang.Ch ...

  10. LVS NAT&comma;DR&comma;TUN三种负载原理

    负载均衡简单介绍 用通俗的话来说负载均衡,就是通过不同的调度机制将用户的请求分派到后端不同的服务器.缓解服务器的请求压力,实现负载均衡的方案有多种,下面简单说说了解的几种方式: DNS 负载:利用DN ...