java Spring JdbcTemplate配合mysql实现数据批量添加

之前 我们讲完了java Spring JdbcTemplate配合mysql对数据库的增删除改操作

下面我们来讲一下批量操作
首先 就是批量添加 同时给一张表 添加多条数据

首先 你的电脑中需要有mysql数据库
然后 选择一个数据库 这里 我用test 然后 下面创建一个用户表 我这里叫 user_list
在这里插入图片描述
批量操作 需要用到 JdbcTemplate 下的 batchUpdate 方法 无论你是批量 添加 / 删除 / 修改 都通过它来实现

方法接收两个参数 第一个是一个sql字符串 第二个参数 是一个list集合
而这个list集合用于存放 操作数据
比如 你做添加 list第一条 加入成第一条 第二条 加入成第二条 以此类推

我们先创建一个java项目 然后 引入对应需要的依赖
在这里插入图片描述
然后 在src目录下创建一个包 叫 dao

下面创建 一个接口 叫 BookDao 参考代码如下

package dao;

import mydata.user_list;
import java.util.List;

public interface BookDao {
    void batchadd(List<Object []> user_list);
}

然后 在dao下创建一个类 来实现这个接口 我这里叫 BookDaoImpl
参考代码如下

package dao;

import mydata.user_list;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public class BookDaoImpl implements BookDao {
    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Override
    public void batchadd(List<Object []> user_list) {
        String sql = "INSERT INTO `user_list`(`user_name`,`user_post`,`superior_id`) VALUES(?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql,user_list);
        System.out.println(ints);
    }
}

我们实现了接口上写的batchadd 抽象方法 然后 sql的话就还是一段普通的添加sql
但 我们这次传递是一个 泛型数组的list集合
他将遍历数组来进行批量添加

我们在src下创建一个目录 叫 senvice 下面创建一个类 叫 BookService
参考代码如下

package senvice;

import dao.BookDao;
import mydata.user_list;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class BookService {
    @Autowired
    protected BookDao BookDao;

    public void batchadd(List<Object []> user_list) {
        BookDao.batchadd(user_list);
    }
}

这里就是调用了刚刚dao层写的batchadd方法 做为一层架构

然后 在src下创建bean.xml
参考代码如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

       <!-- 数据库连接池 -->
       <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
             destroy-method="close">
              <property name="url" value="jdbc:mysql:///test" /><!--对应SQLyog里的数据库-->
              <property name="username" value="root" />            <!-- 用户名 -->
              <property name="password" value="root" />        <!-- 密码 -->
              <property name="driverClassName" value="com.mysql.jdbc.Driver" />
       </bean>

       <!-- JdbcTemplate对象 -->
       <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
              <!--注入dataSource属性-->
              <property name="dataSource" ref="dataSource"></property>
       </bean>

       <context:component-scan base-package="senvice"></context:component-scan>
       <context:component-scan base-package="dao"></context:component-scan>

</beans>

这里 我们打开了对senvice和dao包的注解扫描 然后 配置了数据库连接的基本操作
jdbc:mysql:///test 指向本地 mysql下的test数据库

然后 用户名 username 我的是 root 密码 password 我这也是 root

然后 在src下创建测试类 参考代码如下


import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import senvice.BookService;

import java.util.ArrayList;
import java.util.List;

public class text {
    public static void main(String args[]) {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        List<Object[]> batehArgs = new ArrayList<>();
        Object[] o1 = {"廖凯","前端开发",1};
        Object[] o2 = {"杨苏辛","java开发",3};
        Object[] o3 = {"李志","销售经理",4};
        batehArgs.add(o1);
        batehArgs.add(o2);
        batehArgs.add(o3);
        bookService.batchadd(batehArgs);
    }
}

这里 我们构建了一个数组泛型的list 然后这个数组的三条记录 我们来看数据库表结构
在这里插入图片描述
我们的第一个id是主键 会自动增长 所以我们数组的格式 都是对应表的后三个字段添加

对应 名称 user_name 职务 user_post 部门外键 superior_id
运行测试类代码 结构如下

在这里插入图片描述

输出了一个数组的存储空间 说明 我们的jdbcTemplate.batchUpdate已经返回成功了 我们到数据库中
在这里插入图片描述
刷新表 然后重新打开
在这里插入图片描述
我们新加的数据就进来啦

这么一手批量添加操作
你学废了嘛?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值