zoukankan      html  css  js  c++  java
  • Spring中JdbcTemplate

    JdbcTemplate jdbcTemplate==new JdbcTemplate(source);//传入DataSource类型的参数

    它封装了jdbc中Connection对象的取得,Statement对象的建立,异常的处理,Statement和Connection的关闭等操作。它是线程安全的。

    如:

    jdbcTemplate.update("delete from person where id=?",
    new Object[]{id}, new int[]{Types.INTEGER});

    其中第三个参数可以省略。或者使用PreparedStatementCreator接口来实现:
    jdbcTemplate.update(new PreparedStatementCreator() {
    @Override
    public PreparedStatement createPreparedStatement(Connection conn)
    throws SQLException {
    // TODO Auto-generated method stub
    String sql="insert into person(name) values(?)";
    PreparedStatement pstmt=conn.prepareStatement(sql);
    pstmt.setString(1, person.getName());
    return pstmt;
    }
    });

    或者使用PreparedStatementSetter实现setValues方法。

    1.批处理可以使用jdbcTemplate的batchUpdate(sql,setter)

    其中setter参数实现BatchPreparedStatementSetter接口

    2.查询:

    queryForObject等方法,queryForList取得多个。

    3.查询后的回调方法

    实现RowCallbackHandler

        public Person getPerson(Integer id) {
    final Person person=new Person();
    jdbcTemplate.query("select * from person where id=?",
    new Object[]{id},
    new RowCallbackHandler() {

    @Override
    public void processRow(ResultSet rs) throws SQLException {
    // TODO Auto-generated method stub
    person.setId(rs.getInt("id"));
    person.setName(rs.getString("name"));
    }
    }
    );
    return person;
    // TODO Auto-generated method stub
    /*return (Person)jdbcTemplate.queryForObject(
    "select * from person where id=?",
    new Object[]{id},new int[]{Types.INTEGER},
    new PersonRowMapper());
    */
    }

    或者实现RowMapper

    public class PersonRowMapper implements RowMapper {

    @Override
    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
    // TODO Auto-generated method stub
    Person person=new Person();
    person.setId(rs.getInt("id"));
    person.setName(rs.getString("name"));
    return person;
    }

    }





  • 相关阅读:
    C++模板实战6:迭代器
    Hacking up an armv7s library
    Android之ListView分页数据加载
    Android 命令行打包和签名
    django 自定模板标签的注册
    [置顶] 高效能人士的七个习惯读书笔记(二)
    价格战拉上了Android平板电脑
    Synergy 多系统共享鼠标键盘 Windows 和 Mac 完全配置教程
    global planner源码阅读
    源码安装eigen
  • 原文地址:https://www.cnblogs.com/tazi/p/2307568.html
Copyright © 2011-2022 走看看