JDBC批量操作批量增加批量修改

批量增加

利用JdbcTemplate的batchUpdate方法
有两个参数,第一个是Sql语句,第二个是list集合
代码:
1.先在service中创建方法(已经有了增删改查方法,现在加上)

public void batchAdd(List<Object[]>batchArgs){
    
    
 bookDao.batchAddBook(batchArgs);}

2.再在Dao接口创建这个方法:

//批量添加
void batchAddBook(List<Object[]>batchArgs);

3.再在Dao接口的实现类中加上:(写sql语句)

public class BookDaoImpl impletments BookDao{
    
    
@Autouwired
JdbcTemplate jdbcTemplate;
@Override
public void batchAddBook(List<Object[]>batchArgs){
    
    
String sql = "insert into xxx(表名) values(?,?,?)";
int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);
}
}

4.测试类

List<Object[]>batchArgs = new ArrayList<>();
Object[] object1 = {
    
    "3","java","a"};
Object[] object2 =  {
    
    "4","javase","a"};
Object[] object3= {
    
    "5","javaee","a"};
//按照数据库表中的字段来手动添加
batchArgs.add(object1);
batchArgs.add(object2);
batchArgs.add(object3);
bookService.batchAdd(batchArgs);

批量修改

步骤跟上面的一样,其中sql语句为:

@Override
public void batchUpdateBook(List<Object[]>batchArgs){
    
    
String sql = "update xxx(表名) set username=?,ustatus=? where id=?";
int []ints = jdbcTemplate.batchUpdate(sql,batchArgs);//影响行数
}

注意:在测试类中的集合的顺序要和sql语句中的顺序一致
如上面代码对应的集合应该为:

@Test
public testupdate(){
    
    
List<Object[]>batchArgs = new ArrayList<>();
Object[] object1 = {
    
    "java1","a","3"};
Object[] object2 =  {
    
    "javase1","a","4"};
batchArgs.add(object1);
batchArgs.add(object2);
bookService.batchUpdate(batchArgs);
}

总结:
在service中注入dao,编写批量的方法名,在这个方法中使用dao中的方法,测试类中使用service中的方法,dao先写接口,接口中要写service中使用了的方法,再写实现类,实现类中注入JdbcTemplate,写sql语句,在JdbcTemplate注入DataSource(在xml文件中配置数据库连接池,JdbcTemplate注入DataSource)

猜你喜欢

转载自blog.csdn.net/qq_41358574/article/details/113935017
今日推荐