springboot+oracle批量导入大数据

springboot+oracle批量导入大数据

涉及技术

  • springboot
  • mybatis
  • oracle

1.mybatis中的sql语句

第一种写法

insert into table(...) (select ... from dual) union all (select ... from dual)

<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">
        INSERT INTO T_APPLAUD
        (
            ID,
            USER_ID,
            BUSINESS_TYPE,
            PRODUCT_ID,
            CREATE_TIME
        )
        <foreach item="item" index="index" collection="list" separator="union all">
        (
            SELECT
                #{item.id},
                #{item.userId},
                #{item.businessType},
                #{item.productId},
                #{item.createdTime}
            FROM DUAL
        )
        </foreach>
    </insert>

第二种写法

<insert id="addList" parameterType="java.util.List" useGeneratedKeys="false">
        INSERT ALL
        <foreach item="item" index="index" collection="list">
        INTO T_APPLAUD
        (
            ID,
            USER_ID,
            BUSINESS_TYPE,
            PRODUCT_ID,
            CREATE_TIME
        ) VALUES
        (
            #{item.id, jdbcType=NUMERIC},
            #{item.userId, jdbcType=VARCHAR},
            #{item.businessType, jdbcType=VARCHAR},
            #{item.productId, jdbcType=VARCHAR},
            #{item.createdTime, jdbcType=NUMERIC}
        )
        </foreach>
        SELECT 1 FROM DUAL
    </insert>

2.数据处理

    /**
     * 批量导入数据库
     * dataList 要导入的数据
     * DataPojo 实体类
     */
    public String saveBatch() {
        ......
        try {
            //导入数据库,dataList为所得数据
            if (dataList.size() > 0) {
                //每次导入2000条
                int num = 2000;
                int ceil = (int) Math.ceil(dataList.size() / (double) num);
                List<DataPojo> pojoList = new ArrayList<>();
                int start = 0, stop = 0;
                long startTime = System.currentTimeMillis();
                for (int i = 0; i < ceil; i++) {
                    pojoList.clear();
                    start = i * num;
                    stop = Math.min(i * num + num - 1, dataList.size() - 1);
                    System.out.println("range:" + start + " - " + stop);
                    for (int j = start; j <= stop; j++) {
                        pojoList.add(dataList.get(j));
                    }
                    //在循环中分批次多次导入数据
                    dataMapper.insertBatch(pojoList);
                    System.out.println("已经插入[" + (stop + 1) + "]条");
                }
                long endTime = System.currentTimeMillis();
                System.out.println("插入数据库执行时间 = " + (endTime - startTime) / 1000 + "秒");
                return "成功插入[" + (stop + 1) + "]条数据,耗时[" + (endTime - startTime) / 1000 + "]秒";
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用IDEA创建MyBatis Spring Boot Oracle项目,首先需要确保已安装好Java开发环境和Oracle数据库,并且已经配置好相关环境变量。 1. 打开IDEA,选择创建新项目,选择Spring Initializr,并填写相关信息,如项目名称、项目地址等。 2. 选择需要的依赖,包括Spring Boot、MyBatis、Oracle JDBC驱动等。点击Next。 3. 设置项目的GroupId和ArtifactId,并选择项目保存路径。点击Next。 4. 在项目创建完成后,打开pom.xml文件,添加MyBatis和Oracle JDBC驱动的依赖。 5. 创建数据源配置文件,如application.properties或application.yml,并进行相关配置,包括数据库连接url、用户名、密码等。 6. 创建Java实体类,用于映射数据库表结构。可以使用注解方式或xml配置方式进行映射。 7. 创建Mapper接口,定义数据库操作方法,使用@Mapper或@MapperScan注解进行扫描,将Mapper接口与XML文件进行绑定。 8. 创建Mapper XML文件,在其中编写SQL语句,与Mapper接口方法进行绑定。 9. 创建Service层,实现业务逻辑,并将Mapper注入其中进行数据库操作。 10. 创建Controller层,定义API接口,并调用Service层提供的方法,返回结果给前端展示。 以上是使用IDEA创建MyBatis Spring Boot Oracle项目的主要步骤。在具体实现过程中,还需要根据自身的业务需求进行相应的配置和编码。在开发过程中,可以使用IDEA提供的代码自动提示和调试功能,提高开发效率和代码质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SherlockerSun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值