前文我们介绍了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+Mybatis实现增删改查

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

  6. python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)

    一.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. Flume 概述+环境配置+监听Hive日志信息并写入到hdfs

    Flume介绍Flume是Apache基金会组织的一个提供的高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据:同时,Flume提供 ...

  2. Flume连接oracle实时推送数据到kafka

    版本号: RedHat6.5   JDK1.8    flume-1.6.0   kafka_2.11-0.8.2.1 flume安装 RedHat6.5安装单机flume1.6:RedHat6.5安 ...

  3. Weekend Log 4.6

    PHP相关 常用PHP编译 .\/configure 12 ./configure -prefix=/usr/local/php --with-config-file-path=/usr/local/ ...

  4. overflow标签

    有时父标签设置了固定的宽高,但子标签把父标签给撑开了,就要在父标签里加一个overflow标签,等于hidden超出的地方隐藏,等于auto超出的地方隐藏,并且多个滚动条 <div style= ...

  5. xe5 android 控制蓝牙[转]

    用以下代码中的接口实现控制蓝牙的开.关及详细信息 unit Androidapi.JNI.BluetoothAdapter; // (c) RedTitan Technology 2013// JNI ...

  6. js写法【3】

    var m=[]; m[m.length]=xx;//相当于push 对Repeat方法提供了8种写法做比较,这一点还是不错的.

  7. workerman vmstat服务器状态监控服务

    转载出自 :http://www.workerman.net/workerman-vmstat workerman vmstat服务器状态监控服务 vmstat 命令可以展现服务器的CPU使用率,内存 ...

  8. java经典5种 FlowLayout 、BorderLayout、GridLayout、GridBagLayout、CardLayout布局

    Java 程序通过jvm可以很好的移植到其他平台上,但是java 生成的图形界面样式,在不使用布局的情况下,往往需要重新设定大小,才能在新的平台上调整到最佳样式.这是由于组件的最佳大小 往往是与平台相 ...

  9. 在windows server 2012上安装.net3.5

    1.dism.exe /online /enable-feature /featurename:NetFX3 /Source:D:\sources\sxs /all 2.Start the Local ...

  10. LeetCode——14. Longest Common Prefix

    一.题目链接:https://leetcode.com/problems/longest-common-prefix/ 二.题目大意: 给定若干个字符串,找出它们的最长公共子串. 三.题解: 这道题目 ...