前文我们介绍了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. [C++]String::find

    一.定义 string (1) size_t find (const string& str, size_t pos = 0) const; c-string (2) size_t find ...

  2. cvs报错: socket exception recv failed

    连接都OK的. 也可以telnet到服务器上去. 网上的各种方法都试了,没法解决. 后来一直在乱试,居然解决了. 就是这样设置的,选中第一个复选框.

  3. SmartGit 授权Non-Commerical

    Window: %APPDATA%/syntevo/SmartGit/ 搜索settings.xml, 并且移除这个文件 重启

  4. 学习大数据基础框架hadoop需要什么基础

    什么是大数据?进入本世纪以来,尤其是2010年之后,随着互联网特别是移动互联网的发展,数据的增长呈爆炸趋势,已经很难估计全世界的电子设备中存储的数据到底有多少,描述数据系统的数据量的计量单位从MB(1 ...

  5. mongodb morphia删除数组中指定条件的数据

    先看mongodb操作: db.test.update({"msgid":170},{"$pull":{"msg":{"comti ...

  6. 【VSCode】Windows下VSCode编译调试c/c++【更新】

    便携版已更新,点此获取便携版 用于cpptools插件的配置文件更新 更新的launch.json // Available variables which can be used inside of ...

  7. Linux From Scratch [3]

    1. 为了编译glibc,我们需要kernel header. make mrproper # clean kernel tree make INSTALL_HDR_PATH=dest headers ...

  8. centos 7 服务管理

    启动一个服务:systemctl start firewalld.service关闭一个服务:systemctl stop firewalld.service重启一个服务:systemctl rest ...

  9. 解决下载经过GZip压缩后的网页乱码问题

    目前很多网站默认采用GZip压缩,如果不进行解压缩,下载后生成的html页面打开后会出现中文乱码 乱码前: string url = "http://quote.eastmoney.com/ ...

  10. C++11--时钟和计时器<chrono>

    /* 介绍<chrono> -- 一个精确中立的时间和日期库 * 时钟: * * std::chrono::system_clock: 依据系统的当前时间 (不稳定) * std::chr ...