jdbcTemplate.batchUpdate 不适用错误

问题描述 投票:0回答:1
    public void insert(List<Student> students) {
        
        String sql ="INSERT INTO sqlDB.Student VALUES(?,?,?)";
        
        ArrayList<Object[]> sqlargs=new ArrayList<Object[]>();
        
        for(Student tempstudent: students) {
            
            Object[] studentData={tempstudent.getRollNo(),tempstudent.getName(),tempstudent.getAddress()};
            
            sqlargs.add(studentData);
        }
        
        jdbcTemplate.batchUpdate(sql, sqlargs);
        
        System.out.println("Batch Update Completed-->");
    }

错误:

log4j:警告找不到记录器(org.springframework.context.support.ClassPathXmlApplicationContext)的附加程序。 log4j:WARN 请正确初始化 log4j 系统。 ApplicationContext 已加载 线程“main”java.lang.Error中出现异常:未解决的编译问题: JdbcTemplate 类型中的方法 batchUpdate(String, BatchPreparedStatementSetter) 不适用于参数 (String, ArrayList)

at com.jdbc.dao.StudentDAOimpl.insert(StudentDAOimpl.java:76)
at com.jdbc.service.StudentDAOHelper.setUpStudentTable(StudentDAOHelper.java:35)
at com.jdbc.test.Runner.main(Runner.java:21)

我试图使用 jdbcTemplate.batchUpdate() 将一批学生数据插入数据库,这是我的方法和我收到的错误。目前我只了解了Spring和jdbc,有没有其他方法可以使用batchupdate接口。

java spring spring-jdbc
1个回答
0
投票

您可以通过以下解决方案:

import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;

public class <YourClassName> {

    private JdbcTemplate jdbcTemplate;

    public void insert(List<Student> students) {

        String sql = "INSERT INTO sqlDB.Student VALUES(?,?,?)";

        jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
            @Override
            public void setValues(PreparedStatement ps, int i) throws SQLException {
                Student student = students.get(i);
                ps.setInt(1, student.getRollNo());
                ps.setString(2, student.getName());
                ps.setString(3, student.getAddress());
            }

            @Override
            public int getBatchSize() {
                return students.size();
            }
        });

        System.out.println("Batch Update Completed-->");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.