前文我们介绍了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. kolla-ansible部署单节点OpenStack-Pike

    一.准备工作 最小化安装CentOS 7.5,装完后,进行初始化 selinux,防火墙端口无法访问,主机名问题,都是安装的常见错误,一定要细心确认. kolla的安装,要求目标机器是两块网卡: en ...

  2. js正则表达式只能是数字、字母或下划线

    //只能是数字.字母或下划线 function isValid(str) { var reg = /^\w+$/g; return reg.test(str); }

  3. Linux命令之shutdown

    shutdown命令安全地将系统关机. 有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的.因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失 ...

  4. Keras/Tensorflow训练逻辑研究

    Keras是什么,以及相关的基础知识,这里就不做详细介绍,请参考Keras学习站点http://keras-cn.readthedocs.io/en/latest/ Tensorflow作为backe ...

  5. delphi读取xml文件

    功能: 根据省份更新地市信息 -------------------------------------------------------------------------------} proc ...

  6. 写了一个hiero检查任务渲染结果的脚本

    基本思路是写了一个时间判断函数(postSequence_check)来对比transcode任务提交时间和目标文件夹内文件的修改时间来确定渲染是否成功执行,然后通过Hiero提供的postSeque ...

  7. <亲测>ubuntu 16.04 忘记root密码

    ubuntu 16.04 忘记root密码   阅读目录 方法一 方法二 虚拟机中安装的ubuntu 16.04. 回到目录 方法一 如果用户具有sudo权限,那么直接可以运行如下命令: sudo s ...

  8. C# winForm中调用javascript文件中的方法

    目前有很多的SNS社区或类SNS的网站,例如开心.51.校内等,但是发现大多数社区在邀请好友的时候都没有提供对QQ邮箱或者QQ空间好友列表获取的功能,不过似乎海内支持,但是网上相关QQ的文章还不是很多 ...

  9. C++进阶--逻辑常数和比特位常数(Logical constness vs Bitwise constness)

    对于什么是const函数,有两种理解 Logical constness 实际的数据没有没修改,如下面程序中的vector v Bitwise constness 类的成员变量没有被修改,包括int ...

  10. 学习笔记之Visual Studio Code & Clang

    Mac上XCode太占空间,卸载然后安装VSCode和Clang.在VSCode中再安装extension C/C++和Code Runner,配置Tasks: Configure Task,就可以开 ...