Spring JDBC SqlUpdate类

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;
    }

}



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值