Springboot集成mybatis时批量插入

通过注解的形式实现数据库的批量插入

/**
 * @author Holley
 * @Description 请输入一句话进行描述
 * @create 2018-07-16 12:09
 **/
@Component
@Mapper
public interface TagOfPatientDao {

    @InsertProvider(type = TagOfPatientProvider.class,method = "insertAll")
    void insertAll(@Param("list") List<TagOfPatient>list);

}
/**
 * @author Holley
 * @Description 批量插入
 * @create 2018-07-16 13:21
 **/
public class TagOfPatientProvider {

    public String insertAll(@Param("list") List<TagOfPatient> list){
        StringBuilder sb = new StringBuilder();
        sb.append("insert into tag_of_patient");
        sb.append("(pid,tagid,status,created)");
        sb.append("values");
        MessageFormat mf = new MessageFormat("(#‘{‘list[{0}].pid},#‘{‘list[{0}].tagid},0,now())");
        for(int i = 0;i < list.size();i++){
            sb.append(mf.format(new Object[]{i}));
            if(i < (list.size() - 1)){
                sb.append(",");
            }
        }
        return sb.toString();
    }
}

注意:在dao层向provider类中传参时,如果参数只有一个map类型,则此时参数前一定不要使用@Param("map"),否则,在provider类中获取到的map不是当前的map,而是在当前map上又封装了一层map。(具体原因不是很清楚,如果有哪位翻出了源码,请指教下)

参考

http://f0rb.iteye.com/blog/1207384

https://www.cnblogs.com/fjdingsd/p/5143625.html

原文地址:https://www.cnblogs.com/zhlblogs/p/9579863.html

时间: 2024-10-25 06:44:46

Springboot集成mybatis时批量插入的相关文章

Mybatis+mysql批量插入性能分析测试

前言 今天在网上看到一篇文章(后文中的文章指的就是它) https://www.jianshu.com/p/cce617be9f9e 发现了一种有关于mybatis批量插入的新方法,而且看了文章发现我原来的方法好像有点问题,但是由于文章中使用的环境是sqlserver而我经常使用的是mysql所以还是需要亲自来试试. 环境说明 项目使用springboot mybatis 数据库mysql5.7 使用本地mysql所以网络可以忽略不计 插入对象完全相同,只有id自增 表结构如下: CREATE

mybatis foreach批量插入数据:Oracle与MySQL区别

mybatis foreach批量插入数据:Oracle与MySQL不同点: 主要不同点在于foreach标签内separator属性的设置问题: separator设置为","分割时,最终拼接的代码形式为:insert into table_name (a,b,c) values (v1,v2,v3) ,(v4,v5,v6) ,... separator设置为"union all"分割时,最终拼接的代码形式为:insert into table_name (a,b

mybatis oracle批量插入

<insert id="insertbatchinfotoemploees" parameterType="java.util.List"> insert into INFOTOEMPLOEE select INFO_EMPLOEES.NEXTVAL,A.* from( <!--INFO_EMPLOEES为自增序列--> <foreach collection="list" item="item"

Mybatis+Oracle --批量插入

Oracle自增长ID: 参考博客:Oracle数据库创建表ID字段的自动递增 mybatis语句 参考博客:点评 ibatis+oracle 批量插入的三种方法. 参考第三种 参考博客:mybatis中批量插入的两种方式(高效插入) Oracle自增长ID,如下: 序列: CREATE SEQUENCE "ENERGY"."ROLE_OBJECT_SEQ" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCRE

springboot 集成mybatis

1:依赖mybaits分页插件 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.3</version> </dependency> 2:启动类中@MapperScan 扫描接口包 @MapperScan("

springboot集成mybatis进行开发

1.首先创建springboot项目 点击:http://start.spring.io/  可以在线创建springboot项目 2.加入mybatis的pom文件 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.4</version

SpringBoot集成MyBatis的Bean配置方式

SpringBoot集成MyBatis的Bean配置方式 SpringBoot是一款轻量级开发的框架,简化了很多原先的xml文件配置方式,接下来就介绍一下如何不适用XML来配置Mybatis springboot的yml文件 spring: profiles: active: dev application: name: service-fishkk ##MySql datasource: url: jdbc:mysql://47.94.200.0:3306/mybatis?useSSL=fal

SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

 下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表     user表:  account表:  然后创建实体类        **第一种通过创建子类的方式查询                             需求:查询所有的用户基础信息以及其所属的账户中的金额     1.创建想要得到多表查询数据的实体类(子类)            

SpringBoot集成MyBatis的分页插件PageHelper

俗话说:好??不吃回头草,但是在这里我建议不管你是好马还是不好马,都来吃吃,带你复习一下分页插件PageHelper. 昨天给各位总结了本人学习springboot整合mybatis第一阶段的一些学习心得和源码,主要就算是敲了一下SpringBoot的门儿,希望能给各位的入门带给一点儿捷径,今天给各位温习一下MyBatis的分页插件PageHelper和SpringBoot的集成,它的使用也非常简单,开发更为高效.因为PageHelper插件是属于MyBatis框架的,所以相信很多哥们儿都已经用