javajdbc批量查询_SpringJDBC批量操作
以下⽰例将演⽰如何使⽤spring jdbc进⾏批量更新。我们将在单次批次操作中更新student表中的记录。
student表的结果如下 -
CREATE TABLE student(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT NOT NULL,
PRIMARY KEY (id)
);
SQL
语法:
String SQL = "update Student set age = ? where id = ?";
int[] updateCounts = jdbcTemplateObject.batchUpdate(SQL,
new BatchPreparedStatementSetter() {
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setInt(1, (i).getAge());
ps.setInt(2, (i).getId());
}
public int getBatchSize() {
return students.size();
}
});
Java
在上⾯语法中 -
SQL - 更新语句以更新学⽣的年龄。
BatchPreparedStatementSetter - 批量执⾏者,在PerparedStatement对象中设置每个项⽬的值,由学⽣对象和索引i列出。
getBatchSize()返回批处理的数量。
jdbcTemplateObject - NamedParameterJdbcTemplate对象来更新数据库中的学⽣对象。
updateCounts - int数组包含每个更新查询更新的⾏计数(数量)。
创建项⽬
要了解上⾯提到的Spring JDBC相关的概念,这⾥创建⼀个项⽬⽤来演⽰如何执⾏批量更新。打开Eclipse IDE,并按照以下步骤创建⼀个名称为:BatchOperation 的Spring应⽤程序项⽬。
步骤说明
更新bean配置并运⾏应⽤程序。
完整的项⽬结构如下所⽰ -
⽂件 : l 的内容 -
4.0.0
com.yiibai
BatchOperation
0.0.1-SNAPSHOT
jar
BatchOperation
junit
junit
3.8.1
test
mysql
mysql-connector-java
5.1.40
org.springframework
spring-jdbc
4.1.0.RELEASE
org.springframework
spring-context
4.1.4.RELEASE
以下是数据访问对象接⼝⽂件:StudentDAO.java的代码内容:package com.yiibai;
import java.util.List;
import javax.sql.DataSource;
public interface StudentDAO {
* This is the method to be used to initialize database resources ie.
* connection.
*/
public void setDataSource(DataSource ds);
/**
* This is the method to be used to list down all the records from the * Student table.
*/
public List listStudents();
public void create(String name, Integer age);
public void batchUpdate(final List students);
}
Java
以下是⽂件:Student.java的代码内容:
package com.yiibai;
public class Student {
批量更新sql语句private Integer age;
private String name;
private Integer id;
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
return age;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setId(Integer id) {
this.id = id;
public Integer getId() {
return id;
}
}
Java
以下是⽂件:StudentMapper.java的代码内容:
package com.yiibai;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.RowMapper;
public class StudentMapper implements RowMapper {
public Student mapRow(ResultSet rs, int rowNum) throws SQLException { Student student = new Student();
student.Int("id"));
student.String("name"));
student.Int("age"));
return student;
}
}
Java
以下是⽂件:StudentJDBCTemplate.java的代码内容:
package com.yiibai;
import java.sql.PreparedStatement;
import java.util.List;
import javax.sql.DataSource;
import org.JdbcTemplate;
import org.BatchPreparedStatementSetter; import java.sql.SQLException;
public class StudentJDBCTemplate implements StudentDAO {
private DataSource dataSource;
private JdbcTemplate jdbcTemplateObject;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
}
public List listStudents() {
String SQL = "select * from Student";
List students = jdbcTemplateObject.query(SQL, new StudentMapper());
return students;
}
public void batchUpdate(final List students) {
String SQL = "update Student set age = ? where id = ?";
int[] updateCounts = jdbcTemplateObject.batchUpdate(SQL, new BatchPreparedStatementSetter() { public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setInt(1, (i).getAge());
ps.setInt(2, (i).getId());
}
public int getBatchSize() {
return students.size();
}
});
System.out.println("Records updated!");
}
public void create(String name, Integer age) {
// TODO Auto-generated method stub
String insertQuery = "insert into student (name, age) values (?, ?)";
jdbcTemplateObject.update( insertQuery, name, age);
System.out.println("Created Record Name = " + name + " Age = " + age);
return;
}
}
Java
以下是程序执⾏⼊⼝⽂件:MainApp.java的代码内容:
package com.yiibai;
import java.util.ArrayList;
import java.util.List;
import t.ApplicationContext;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论