前文我们介绍了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. Python Scrapy环境搭建(一)

    本来是以学习的目的添加了几个QQ群,但是发现群内有着很多的小白都在咨询如何搭建环境的问题,所以我这里把自己搭建的方法分享下 1.首先我们需要查看下自己安装的python的版本; 最简单的版本就是在命令 ...

  2. Hanlp分词之CRF中文词法分析详解

    这是另一套基于CRF的词法分析系统,类似感知机词法分析器,提供了完善的训练与分析接口. CRF的效果比感知机稍好一些,然而训练速度较慢,也不支持在线学习. 默认模型训练自OpenCorpus/pku9 ...

  3. xcode Xcode_9.2.xip 官方离线下载地址

    一.打开下面的链接 https://developer.apple.com/downloads/ 二.在左侧搜索框中搜索:xcode 三.展开你要下载的版本,点列表右边的蓝色链接如:Xcode 9.2 ...

  4. javaweb下载中的一个问题

    如果你发现,response头以及contentType都已经设置没错,但出现浏览器将下载的文件内容显示到新窗口 那么解决方案就是在请求的时候不要产生新的窗口

  5. 用PHP发送POST请求

    /** * 发送post请求 * @param string $url 请求地址 * @param array $post_data post键值对数据 * @return string */ fun ...

  6. SDI工程时钟路径分析

    SDI工程时钟路径分析 //------------- Receive Ports - RX Fabric Output Control Ports ------------- output rxou ...

  7. 启动代码和Bootloader区别

    很多人都会把两者混淆,所以这里稍微说一下. 启动代码和Bootloader有点类似于类和结构体的关系,也就是说结构体只是一种很特殊很特殊的类,但不能说类是一种结构体. 也就是说可以说启动代码是Boot ...

  8. Git的一些东西(后续补充)

    查看帮助,要装git-doc,另外推荐git的图形客户端gitg,比gitk好看多了,用apt-get install就可   HEAD是当前工作版本的指针   --global保存的是当前用户的配置 ...

  9. RichEdit选中文字右键菜单的实现

    procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: ...

  10. SVN怎么触发Jenkins自动构建

    通常,有几种方式可以在SVN仓库发生改变时触发Jenkins进行构建.第一种是,Jenkins主动轮询SVN仓库:第二种是,在SVN客户端(如TortoiseSVN)创建客户端hooks来触发构建:第 ...