当前位置: 首页 > news >正文

mysql 怎么设置 allowmultiqueries=true_mybatis(6)—实现批量操作allowMultiQueries=true配置...

数据准备

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。

相关文章:

  • mysql删除重新创建表_mysql 删除表 创建表 等操作
  • phpcms mysql error_PHPCMS2008 MySQL Errno:1064错误
  • mysql唯一索引的关键字_mysql中唯一索引的关键字是什么
  • mysql load data 卡死_MySQL中由load data语句引起死锁的解决案例
  • 什么是命令行参数_写命令行应用程序什么不可或缺?Go可以这样处理命令行参数...
  • python做简单的游戏名字_零基础Python实战(二),20行写个剪刀石头布游戏
  • python拆分参数列表_Python:使用itertools将列表拆分为组的参数
  • python语言哪种最好_学习Python语言选择哪种方式好?
  • rc时间常数定义_时间常数RC的计算方法
  • mysql 进行数据维护_MySQL从库维护经验分享
  • jsp mysql 导出 excel乱码_jsp存取mysql中文数据结果为乱码的解决方法(转自自己以前的blog)...
  • python面向对象基础知识_python面向对象的基础知识
  • mysql递归查询及节点层级_Mysql中的递归层次查询(父节点下的所有节点)
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • datax把text转mysql_使用DataX实现mysql数据迁移
  • [Vue CLI 3] 配置解析之 css.extract
  • Cumulo 的 ClojureScript 模块已经成型
  •  D - 粉碎叛乱F - 其他起义
  • httpie使用详解
  • iOS | NSProxy
  • java中的hashCode
  • JSONP原理
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • magento 货币换算
  • PermissionScope Swift4 兼容问题
  • SQLServer插入数据
  • 从setTimeout-setInterval看JS线程
  • 从零开始在ubuntu上搭建node开发环境
  • 好的网址,关于.net 4.0 ,vs 2010
  • 聊聊sentinel的DegradeSlot
  • 扑朔迷离的属性和特性【彻底弄清】
  • 网页视频流m3u8/ts视频下载
  • 为视图添加丝滑的水波纹
  • 系统认识JavaScript正则表达式
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • zabbix3.2监控linux磁盘IO
  • ​Java并发新构件之Exchanger
  • #laravel 通过手动安装依赖PHPExcel#
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (2)(2.10) LTM telemetry
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三) diretfbrc详解
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十)c52学习之旅-定时器实验
  • .net CHARTING图表控件下载地址
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET 材料检测系统崩溃分析
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .net6+aspose.words导出word并转pdf
  • .NET开发人员必知的八个网站