MyBatis注解模式批量insert方法
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方法相关推荐
- MyBatis注解模式取参数方法
2019独角兽企业重金招聘Python工程师标准>>> @Select("select count(*) from (select id from patrol_host ...
- Spring和Mybatis集成,如何批量insert update?以及一些通用Dao的设想
2019独角兽企业重金招聘Python工程师标准>>> 之所以写这篇文章,主要是给新手提供一些mybatis使用的技巧和思路 现在国内很多项目都使用了mybatis作为ORM框架 我 ...
- mybatis注解模式和混合模式
1.引入mybatis-starter 2.配置application.yaml中,指定mapper-location位置即可 #配置mybatis规则 mybatis: # config-locat ...
- mybatis注解方式返回insert的id
以前用xml配置的方式久了,突然有一天公司有个项目用的是注解方式,网上找了很多无法满足我需求,于是....还是少废话,上代码吧 controller /** * 插入并返回刚插入的记录的id例子,实际 ...
- mybatis注解实现批量插入遇到的坑
sql是没错的,但是对foreach的用法不熟练,insert的时候 不能使用标红的那一块去加括号, 会报错Column count doesn't match value count at row ...
- SSM框架之MyBatis3专题5:MyBatis注解式开发
1 注解的基本知识 以下注解知识的讲解,均使用@Override.@Deprecated(过时).@SuppressWarnings举例. 1.1 注解的基本语法 注解后是没有分号的: 注解首字母是大 ...
- mybatis注解开发动态sql
mybatis注解开发动态sql 本篇来讲一下如何使用mybatis注解模式中的动态sql 先来讲一下什么是动态sql 在我们实际开发的时候可能会出现很多方法需要一条很相似的sql语句来进行增删改查, ...
- 整合MyBatis操作 注解模式 混合模式
注解模式 先创建表 create TABLE city ( id int(11) primary key auto_increment, name VARCHAR(30), state VARCHAR ...
- Spring Boot 实战 —— MyBatis(注解版)使用方法
原文链接: Spring Boot 实战 -- MyBatis(注解版)使用方法 简介 MyBatis 官网 是这么介绍它自己的: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过 ...
最新文章
- 坚持教学与科研相结合
- linux 复制文件 中文,linux中cp命令如何复制文件
- spring解析配置文件(三)
- pentaho DI--- Tutorial (spoon)
- vb.net怎么调用fastreport报表_财务分析-企业财务管理报表模板制作实现智能化的财务运营...
- core Animation动画
- c语言中逗号是什么字符,C语言中的逗号操作符
- bp神经网络反向传播推导,bp神经网络的传递函数
- Modbus通信协议
- Linux4.14加密框架中的主要数据结构(1)—— struct crypto_alg(通用算法)
- 我新鲜出炉的 plist 图集拆图工具!github
- Hopping Rabbit---牛客
- 纯CSS调整select选择框高度,兼容IE/Firefox/Opera/Safair/Chrome
- Spire pdf 操作pdf,页眉 页脚 水印 二维码
- 微机原理 单片机笔记
- C语言【程序21】 题目:打印出如下图案(菱形)
- 如果能天天送书,天天爽就好了,再送5本
- 高并发之数十万甚至百万级qps吞吐量方案
- 博通服务器网卡型号区别,博通BROADCOM 网卡型号汇总
- Shader各种效果