2019独角兽企业重金招聘Python工程师标准>>>

方法一:script标签方式

    @Insert("<script>insert into xxx (channelId,siteId) " +"values " +"<foreach collection=\"list\" item=\"item\" index=\"index\" separator=\",\" >(#{item.channelId},#{item.siteId})" +"</foreach></script>")public int addxxx(@Param("list")List<xxxBean> xxxBean);

方法二:SQL直接生成   注意该方法经过实际使用出现问题!!!!!!!!!!!!!!!!!!!!.

当批量插入的字段中包涵中文时,这样拼接的中文参数是没有' '包裹的.存储的时候就会出错.因此该方式只适合存储字段中只有数字的情况,当然也可以在拼接的时候将''拼接上,但是很容易出错

@InsertProvider(type=SqlProvider.class,method="addccc")
public int addxxxx(@Param("aBean")List<xxxBean> xxxBean);
public String addccc(Map<String,Object> map){List<xxxBean> channelList = (List<xxxBean>)map.get("aBean");StringBuilder sql = new StringBuilder("insert into table").append(" (channelId, siteId) ").append("values ");for (int i=0;i<channelList.size();i++) {sql.append("(").append(channelList.get(i).getChannelId()).append(",").append(channelList.get(i).getSiteId()).append(")");if(i < channelList.size() - 1){sql.append(",");}}return sql.toString();}

方法三: 拼接下标取值的SQL 试用了下,没问题,有待观察

需要得到以下格式的SQL:

insert into user (name,sex)
values
(#{userBeans[0].name},#{userBeans[0].sex}),(#{userBeans[1].name},#{userBeans[1].sex})
public String insertUserByList(Map<String,Object> map){List<User> alarmInBeans = (List<userBeans>)map.get("userBeans");StringBuilder sql = new StringBuilder("insert into user (name, sex) values");// #{userBeans[0].name}// 拼接出这样的格式的最终sql通过#{}取值// 需要用来格式化的字符串模板MessageFormat mf = new MessageFormat("(#'{'userBeans[{0}].name}, #'{'alarmInBeans[{0}].sex})");for (int i = 0; i < alarmInBeans.size(); i++) {// 将{0}替换为object数组的第一个元素sql.append(mf.format(new Object[] { i }));if (i < alarmInBeans.size() - 1) {sql.append(",");}}return sql.toString();
}

转载于:https://my.oschina.net/MrBamboo/blog/882880

MyBatis注解模式批量insert方法相关推荐

  1. MyBatis注解模式取参数方法

    2019独角兽企业重金招聘Python工程师标准>>> @Select("select count(*) from (select id from patrol_host ...

  2. Spring和Mybatis集成,如何批量insert update?以及一些通用Dao的设想

    2019独角兽企业重金招聘Python工程师标准>>> 之所以写这篇文章,主要是给新手提供一些mybatis使用的技巧和思路 现在国内很多项目都使用了mybatis作为ORM框架 我 ...

  3. mybatis注解模式和混合模式

    1.引入mybatis-starter 2.配置application.yaml中,指定mapper-location位置即可 #配置mybatis规则 mybatis: # config-locat ...

  4. mybatis注解方式返回insert的id

    以前用xml配置的方式久了,突然有一天公司有个项目用的是注解方式,网上找了很多无法满足我需求,于是....还是少废话,上代码吧 controller /** * 插入并返回刚插入的记录的id例子,实际 ...

  5. mybatis注解实现批量插入遇到的坑

    sql是没错的,但是对foreach的用法不熟练,insert的时候 不能使用标红的那一块去加括号, 会报错Column count doesn't match value count at row ...

  6. SSM框架之MyBatis3专题5:MyBatis注解式开发

    1 注解的基本知识 以下注解知识的讲解,均使用@Override.@Deprecated(过时).@SuppressWarnings举例. 1.1 注解的基本语法 注解后是没有分号的: 注解首字母是大 ...

  7. mybatis注解开发动态sql

    mybatis注解开发动态sql 本篇来讲一下如何使用mybatis注解模式中的动态sql 先来讲一下什么是动态sql 在我们实际开发的时候可能会出现很多方法需要一条很相似的sql语句来进行增删改查, ...

  8. 整合MyBatis操作 注解模式 混合模式

    注解模式 先创建表 create TABLE city ( id int(11) primary key auto_increment, name VARCHAR(30), state VARCHAR ...

  9. Spring Boot 实战 —— MyBatis(注解版)使用方法

    原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...

最新文章

  1. 坚持教学与科研相结合
  2. linux 复制文件 中文,linux中cp命令如何复制文件
  3. spring解析配置文件(三)
  4. pentaho DI--- Tutorial (spoon)
  5. vb.net怎么调用fastreport报表_财务分析-企业财务管理报表模板制作实现智能化的财务运营...
  6. core Animation动画
  7. c语言中逗号是什么字符,C语言中的逗号操作符
  8. bp神经网络反向传播推导,bp神经网络的传递函数
  9. Modbus通信协议
  10. Linux4.14加密框架中的主要数据结构(1)—— struct crypto_alg(通用算法)
  11. 我新鲜出炉的 plist 图集拆图工具!github
  12. Hopping Rabbit---牛客
  13. 纯CSS调整select选择框高度,兼容IE/Firefox/Opera/Safair/Chrome
  14. Spire pdf 操作pdf,页眉 页脚 水印 二维码
  15. 微机原理 单片机笔记
  16. C语言【程序21】 题目:打印出如下图案(菱形)
  17. 如果能天天送书,天天爽就好了,再送5本
  18. 高并发之数十万甚至百万级qps吞吐量方案
  19. 博通服务器网卡型号区别,博通BROADCOM 网卡型号汇总
  20. Shader各种效果

热门文章

  1. Java——IO(打印流)
  2. mysql慢查询开启语句分析_mysql慢查询语句分析总结
  3. C语言模拟实现标准库函数之strcmp()
  4. linux网络编程之Socket编程
  5. linux操作系统之信号
  6. 堆的应用(堆排序,TopK问题)
  7. Makefile札记
  8. 成为C++高手之实战项目
  9. C++成员函数指针的应用
  10. C语言中信号函数(signal)的使用