(六)Spring 中的 JdbcTemplate

目录


概念

JdbcTemplate : 是 Spring 中对持久层(JDBC 技术)一个封装 ;

使用起来和 Dbutuis 很相似 ;(其实 JdbcTemplate 还不如 Dbutils,看着 Spring 的面子,学一下 ;)


配置数据库

//        配置数据库,配置数据源
        DriverManagerDataSource dataSource = new DriverManagerDataSource() ;
//        配置数据库驱动
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
//        设置数据库URI
        dataSource.setUrl("jdbc:mysql:///springDay03");
//        配置管理员账号密码
        dataSource.setUsername("root");
        dataSource.setPassword("root");

创建 JdbcTemplate 对象

//        创建 jdbcTemplate 模板
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource) ;

增删改查代码

跟 Dbutils 操作差不多

增删改,都是调用 update 方法,操作方法跟 Dbutils 基本一致 ;

//        增
        String sql = "insert into user value(?,?,?)" ;
        jdbcTemplate.update(sql,new Object[]{"001","蜡笔小新","123456"}) ;

//        改
        sql = "update user set password = ? where id = ?" ;
        jdbcTemplate.update(sql,new Object[]{"0000","001"}) ;

//        删
        sql = "DELETE from user where  id = ?" ;
        jdbcTemplate.update(sql,"001") ;

查询的时候, JdbcTemplateDbutils 都一样,都提供一个接口,让我们实现我们自己的处理逻辑 ;JdbcTemplate 给出的接口是:RowMapper ;

JdbcTemplate 还不如 Dbutils 的原因,就在于:JdbcTemplate 竟然,没有提供基本的实现类给我们。。

  1. 查询返回当个结果(queryForObject(sql,泛型)

        sql = "select COUNT(*) FROM USER " ;
        int num = jdbcTemplate.queryForObject(sql,Long.class).intValue() ;
  2. 查询返回当个对象(queryForObject(sql, new RowMapper<泛型>,可变参数

        sql = "select * from user where id = ?" ;
        User user = jdbcTemplate.queryForObject(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet resultSet, int i) throws SQLException {
                String name = resultSet.getString("name") ;
                String password = resultSet.getString("password") ;
                User user = new User() ;
                user.setName(name);
                user.setPassword(password);
                return user;
            }
        },"1");
    
  3. 查询返回 list 集合(query

    
        sql = "select * from user " ;
        List<User> users = jdbcTemplate.query(sql, new RowMapper<User>() {
        // 这里的第二个参数是,代表本当前装进list是第几个对象,从0开始计数 ;
            @Override
            public User mapRow(ResultSet resultSet, int i) throws SQLException {
                String name = resultSet.getString("name") ;
                String password = resultSet.getString("password") ;
                User user = new User() ;
                user.setName(name);
                user.setPassword(password);
                return user;
            }
        });
原文地址:https://www.cnblogs.com/young-youth/p/11665687.html