热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mybatis(6)—实现批量操作allowMultiQueries=true配置

mybatis&&数据库优化&&缓存目录数据准备CREATETABLE`user_t`(`id`bigint(20)NOT

mybatis&&数据库优化&&缓存目录

数据准备

CREATE TABLE `user_t` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
  `password` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=128 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
@RestController
public class TransactionController {
    @Resource
    private UserTMapper userTMapper;
    private List userTList;
    private List updateList;
    {
        userTList = new ArrayList();
        userTList.add(new UserT("LiBai", "123", 14));
        userTList.add(new UserT("Tom", "124", 13));
        userTList.add(new UserT("Tonny", "12", 11));
        userTList.add(new UserT("Unix", "13", 10));
    }
    {
        updateList = new ArrayList();
        updateList.add(new UserT(128, "Tom_2"));
        //更新这个参数时会发生异常。但是之前操作并不会回滚。
        updateList.add(new UserT(129, "1111111111111111111111111111111adsdsadsadsadas"));
        updateList.add(new UserT(130, "uninx_2"));
    }
    /**
     * 批量插入数据
     *
     * @return
     */
    @RequestMapping("/listUser")
    public List insertUser2() {
        userTMapper.batchSave(userTList);
        return userTList;
    }

    /**
     * 批量更新数据
     *
     * @return
     */
    @RequestMapping("/listUpdate")
    public List updateUser2() {
        userTMapper.batchUpdate(updateList);
        return userTList;
    }
}
public interface UserTMapper {
    void batchSave(@Param(value = "list") List userTList);
    void batchUpdate(@Param(value = "list") List userTList);
}

        insert into user_t (user_name, password,
        age)
        VALUES
        
            (
            #{item.userName,jdbcType=VARCHAR},
            #{item.password,jdbcType=VARCHAR},
            #{item.age,jdbcType=INTEGER}
            )
        
            UPDATE user_t
            SET user_name = #{item.userName}
            WHERE  id= #{item.id}
        

批量插入时,可以构建多个value()。最终与数据库执行时只是一条sql语句。

但是在xml中进行批量更新时,会执行多条sql语句。但mybatis会抛出异常,即不允许多条语句同时执行。

实现批量操作:

在url后面增加allowMultiQueries=true配置。

spring:
  datasource:
    name: mysql_test
    type: com.alibaba.druid.pool.DruidDataSource
    #druid相关配置
    druid:
      url: jdbc:mysql://localhost:3306/test_db?allowMultiQueries=true
#      url: jdbc:mysql://localhost:3306/test_db
      username: root
      password: 123qwe

但是需要注意:该批量操作的sql语句并未在一个commit中,效果等同于代码中使用for循环去更新sql。


推荐阅读
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 本文详细介绍了在MyBatis框架中如何通过#和$两种方式来传递SQL查询参数。使用#方式可以提高执行效率,而使用$则有助于在复杂SQL语句中更好地查看日志。此外,文章还探讨了不同场景下的参数传递方法,包括实体对象、基本数据类型以及混合参数的使用。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 本文探讨了如何使用Scrapy框架构建高效的数据采集系统,以及如何通过异步处理技术提升数据存储的效率。同时,文章还介绍了针对不同网站采用的不同采集策略。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文介绍了如何使用Java编程语言实现凯撒密码的加密与解密功能。凯撒密码是一种替换式密码,通过将字母表中的每个字母向前或向后移动固定数量的位置来实现加密。 ... [详细]
  • java datarow_DataSet  DataTable DataRow 深入浅出
    本篇文章适合有一定的基础的人去查看,最好学习过一定net编程基础在来查看此文章。1.概念DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据 ... [详细]
  • 本文详细介绍了Socket在Linux内核中的实现机制,包括基本的Socket结构、协议操作集以及不同协议下的具体实现。通过这些内容,读者可以更好地理解Socket的工作原理。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 本文深入探讨了MySQL中的高级特性,包括索引机制、锁的使用及管理、以及如何利用慢查询日志优化性能。适合有一定MySQL基础的读者进一步提升技能。 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 面对众多的数据分析工具,如何选择最适合自己的那一个?对于初学者而言,了解并掌握几种核心工具是快速入门的关键。本文将从数据处理的不同阶段出发,推荐三种广泛使用的数据分析工具。 ... [详细]
  • Excel技巧:单元格中显示公式而非结果的解决方法
    本文探讨了在Excel中如何通过简单的方法解决单元格显示公式而非计算结果的问题,包括使用快捷键和调整单元格格式两种方法。 ... [详细]
author-avatar
舍舍与你-6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有