当前位置: 首页 > news >正文

[java Spring JdbcTemplate配合mysql实现数据批量删除

之前的文章 java Spring JdbcTemplate配合mysql实现数据批量添加和文章java Spring JdbcTemplate配合mysql实现数据批量修改
先后讲解了 mysql数据库的批量添加和批量删除操作 会了这两个操作之后 批量删除就不要太简单

我们看到数据库 这里 我们用的是mysql工具
在这里插入图片描述
这里 我们有一个test数据库 然后下面有一个 user_list 表
我们将用他的后三条数据 演示批量删除

首先 创建一个java项目 然后引入对应的所需依赖
在这里插入图片描述
然后 在src下创建目录 dao
在dao目录下创建接口 我这里叫 BookDao
参考代码如下

package dao;import mydata.user_list;
import java.util.List;public interface BookDao {void deleteUser(List<Object []> user_list);
}

我们定义了一个抽象的deleteUser批量删除方法 接受一个泛型为数组类型的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.Arrays;
import java.util.List;@Repository
public class BookDaoImpl implements BookDao {@Autowiredprivate JdbcTemplate jdbcTemplate;@Overridepublic void deleteUser(List<Object []> user_list) {String sql = "delete FROM `user_list` WHERE user_id like ?;";int[] ints = jdbcTemplate.batchUpdate(sql,user_list);System.out.println(Arrays.toString(ints));}
}

这里 引入了了JdbcTemplate 这个类中就包含了很多数据库操作 然后 我们实现了BookDao 接口 并重写了他里面的deleteUser方法 调用了jdbcTemplate下的batchUpdate方法

这个方法 有两参数 第一个是 一段sql语句 这里我们已经写了一段基本的删除sql语句 而另一个 则是一个数组泛型list 数组的每一个下标就是一个条件 对应 sql语句中的 ?
最后 这个方法返回一个int数组类型的变量 告诉你 每一次sql影响的行数
然后 我们将这个返回值拿到并输出

然后 我们在src下创建目录 叫 senvice 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 {@Autowiredprotected BookDao BookDao;public void deleteUser(List<Object []> user_list){BookDao.deleteUser(user_list);}
}

这里 纯属就是多掏一层 来满足架构

然后 在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.xsdhttp://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>

这里 我们声明链接 本地test数据库 然后 username用户名 我这里是root 密码 password 我设置的还是root 然后打开了src下 senvice包和dao包的注解扫描

最后 在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 = {10};Object[] o2 = {11};Object[] o3 = {12};batehArgs.add(o1);batehArgs.add(o2);batehArgs.add(o3);bookService.deleteUser(batehArgs);}
}

然后 回头来看数据库表结构数据 显然 我们这里数组中的 id
指向的是这几条数据
在这里插入图片描述
代码运行结果如下
在这里插入图片描述
可以看到 控制台输出的信息 告诉我们 运行成功了 三次sql执行 分别影响了三条数据
我们回到数据库 刷新并重新打开表
在这里插入图片描述
可以看到 我们的数据就顺利干掉了
在这里插入图片描述

http://www.lryc.cn/news/31882.html

相关文章:

  • uos 20 统信 fprintd 记录
  • vue移动端h5,文本溢出显示省略号,且展示‘更多’按钮
  • php宝塔搭建部署实战兰空图床程序网站PHP源码
  • 软件测试面试:拿到一个产品(版本)如何开展测试?
  • 【Opencv项目实战】图像的像素值反转
  • Swagger生成接口在线文档
  • 104.第十九章 MySQL数据库 -- MySQL主从复制、 级联复制和双主复制(十四)
  • 第一次使用Python for Qt中的问题
  • .Net Core WebApi 在Linux系统Deepin上部署Nginx并使用(一)
  • Java——打开轮盘锁
  • JavaScript(2)
  • FFMPEG 安装教程windowslinux(CentOS版)
  • 【虹科案例】虹科任意波形发生器在量子计算中的应用
  • 【强化学习】强化学习数学基础:随机近似理论与随机梯度下降
  • ThreadLocal 学习常见问题
  • 文件包含漏洞1 | iwebsec
  • 基于MindAR实现的网页端WebAR图片识别叠加动作模型追踪功能(含源码)
  • ssh 远程连接方式总结
  • springboot+mybatisPlus简单实现数据分页显示
  • axios的基本使用
  • 核心 Android 调节音量的过程
  • 用C/C++制作一个简单的俄罗斯方块小游戏
  • 使用免费负载生成器swingbench对oracle数据库进行压力测试(测试Oracle的功能或评估性能)
  • 【预告】ORACLE Primavera P6 v22.12 虚拟机发布
  • 机器学习100天(四十):040 线性支持向量机-公式推导
  • 失败经验之震荡玩家往往死于趋势市场
  • 应用层与传输层~
  • IO文件操作
  • 【构建工具】webpack 3、4 升级指南,摆脱低版本的困扰
  • Javaweb第一个项目——实现简单的登陆功能