其实这个操作和批量添加挺像的 调的同一个方法
首先 我们看数据库结构
这是我本地的 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 {
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public 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 {
@Autowired
protected 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.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>
这些基本的链接数据库配置 我就不多讲了
然后 我们在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的影响行数都是一行
我们到数据库 刷新表并重新打开
我们这几条数据就修改成功啦