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

    }





  • 相关阅读:
    21.栈的压入、弹出序列(python)
    19.顺时针打印矩阵(python)
    18.二叉树的镜像(python)
    [leetcode] 82. 删除排序链表中的重复元素 II
    [leetcode] 83. 删除排序链表中的重复元素
    [leetcode] 81. 搜索旋转排序数组 II
    [leetcode] 80. 删除排序数组中的重复项 II
    [leetcode] 208. 实现 Trie (前缀树)(Java)
    [leetcode] 212. 单词搜索 II(Java)
    [leetcode] 79. 单词搜索
  • 原文地址:https://www.cnblogs.com/tazi/p/2307568.html
Copyright © 2011-2022 走看看