org.springframework.jdbc.object.SqlUpdate
类提供了表示SQL更新的可重用操作对象。
使用到的 Student
表的结构如下 -
CREATE TABLE Student(
ID INT NOT NULL AUTO_INCREMENT,
NAME VARCHAR(20) NOT NULL,
AGE INT NOT NULL,
PRIMARY KEY (ID)
);
类的声明
以下是org.springframework.jdbc.object.SqlUpdate
接口的声明 -
public abstract class SqlUpdate<T>
extends SqlOperation
用法
- 步骤1 - 使用配置的数据源创建一个
JdbcTemplate
对象。 - 步骤2 - 创建一个实现
RowMapper
接口的StudentMapper
对象。 - 步骤3 - 使用
JdbcTemplate
对象方法在使用SqlUpdate
对象时进行数据库操作。
以下示例将演示如何使用SqlUpdate
对象进行数据更新操作。首先使用StudentMapper
对象将读取记录从student
表映射到Student
对象。
public class StudentJDBCTemplate implements StudentDAO {
private DataSource dataSource;
private JdbcTemplate jdbcTemplateObject;
SimpleJdbcInsert jdbcInsert;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
this.jdbcTemplateObject = new JdbcTemplate(dataSource);
this.jdbcInsert = new SimpleJdbcInsert(dataSource).withTableName("Student");
}
public void create(String name, Integer age) {
Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("name", name);
parameters.put("age", age);
jdbcInsert.execute(parameters);
System.out.println("Created Record Name = " + name + " Age = " + age);
return;
}
public List<Student> listStudents() {
String sql = "select * from Student";
SqlQuery<Student> sqlQuery = new SqlQuery<Student>() {
@Override
protected RowMapper<Student> newRowMapper(Object[] parameters, Map<?, ?> context) {
return new StudentMapper();
}
};
sqlQuery.setDataSource(dataSource);
sqlQuery.setSql(sql);
List<Student> students = sqlQuery.execute();
return students;
}
public void update(Integer id, Integer age) {
String SQL = "update Student set age = ? where id = ?";
SqlUpdate sqlUpdate = new SqlUpdate(dataSource, SQL);
sqlUpdate.declareParameter(new SqlParameter("age", Types.INTEGER));
sqlUpdate.declareParameter(new SqlParameter("id", Types.INTEGER));
sqlUpdate.compile();
sqlUpdate.update(age.intValue(), id.intValue());
System.out.println("Updated Record with ID = " + id);
return;
}
public Student getStudent(Integer id) {
String SQL = "select * from Student where id = ?";
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, new StudentMapper());
return student;
}
}