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

java Spring JdbcTemplate配合mysql实现数据批量修改

其实这个操作和批量添加挺像的 调的同一个方法

首先 我们看数据库结构
在这里插入图片描述
这是我本地的 mysql 里面有一个test数据库 里面有一张user_list表

然后创建一个java项目 然后 引入对应的JAR包
在这里插入图片描述
在src下创建 dao 目录

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

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

这里 我们顶一个了一个reviseUser抽象方法 引入了一个以数组泛型的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 reviseUser(List<Object []> user_list) {String sql = "UPDATE user_list SET user_name = ? WHERE user_id = ?;";int[] ints = jdbcTemplate.batchUpdate(sql,user_list);System.out.println(Arrays.toString(ints));}
}

这里 我们实现了BookDao接口 然后重写了 他的 reviseUser方法 这里 我们调用了jdbcTemplate的batchUpdate
第一个参数 接收一段sql语句 第二个参数 则是一个数组泛型集合

然后 在 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 {@Autowiredprotected BookDao BookDao;public void reviseUser(List<Object []> user_list){BookDao.reviseUser(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>

这些基本的链接数据库配置 我就不多讲了

然后 我们在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.reviseUser(batehArgs);}
}

之所以这样写 是因为我们写的sql 第一个问号对应要修改成什么样的名称 第二个 则是条件id
在这里插入图片描述
我们这里写的几个id分别是 10 11 12

我们看一下这几条数据
在这里插入图片描述
然后 我们运行测试类代码

运行结果如下
在这里插入图片描述
可以看到 系统控制台显示运行成功 返回了每次sql的影响行数都是一行

我们到数据库 刷新表并重新打开
在这里插入图片描述
我们这几条数据就修改成功啦
在这里插入图片描述

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

相关文章:

  • 《算法分析与设计》笔记总结
  • 序列化与反序列化概念
  • 【Java并发编程】CountDownLatch
  • 【iOS】Blocks
  • Java Volatile的三大特性
  • Android Compose——一个简单的Bilibili APP
  • 二叉树的最近公共祖先【Java实现】
  • 关闭应用程序遥测,禁止Windows收集用户信息
  • 【备战面试】每日10道面试题打卡-Day4
  • 热乎的面经——初出茅庐
  • 数据库中各种锁汇总
  • p76 - Python 开发-内外网收集 Socket子域名DNS
  • QCC51XX--eFush Key加密
  • nginx http模块
  • 守护进程 || 精灵进程
  • Zookeeper3.5.7版本——客户端命令行操作(znode 节点数据信息)
  • 如何写好单测
  • CDH-6.3.2内置spark-2.4.0的BUG
  • SpringCloud之ElasticSearch笔记
  • 数字图像学笔记 —— 17. 图像退化与复原(自适应滤波之「最小二乘方滤波」)
  • 2023-03-05:ffmpeg推送本地视频至lal流媒体服务器(以RTMP为例),请用go语言编写。
  • MathType7最新版免费数学公式编辑器
  • 一文带你入门angular(中)
  • 单例设计模式共享数据问题分析、解决(c++11)设计多线程。
  • Embedding-based Retrieval in Facebook Search
  • xmu 离散数学 卢杨班作业详解【8-12章】
  • Linux入门篇-权限管理
  • Linux(基于 Centos7) 常用操作
  • Math类详解与Random类、三种随机数生成方式(java)
  • Mac编译QT程序出现Undefined symbols for architecture x86_64