Spring 的 jdbcTemplate 操作

1、Spring框架是一站式框架

(1)针对 JavaEE 三层,每一层都有解决技术

(2)在 dao 层,使用 jdbcTemplate

 

2、Spring对不同的持久化层的技术都进行了封装

  

  (1)jdcbTemplate 对 jdbc 进行了封装

 

3、jdbcTemplate 使用和 dbutils (Apache公司)使用很相似,都是对数据库进行 crud 的操作

1、增加

  (1)导入 jdbcTemplate 使用的 jar 包(Maven项目)————别忘了数据库驱动!!!

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.0.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-tx</artifactId>
    <version>4.0.2.RELEASE</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.0.4</version>
</dependency>

  (2)创建对象,设置数据库的信息

  (3)创建 jdbcTemplate 对象,设置数据源

  (4)调用 jdbcTemplate 对象里面的方法实现操作 

   

 

2、修改

  

 

3、删除

  

 

4、查询

   (1)使用 jdbcTemplate 实现查询操作——对比DButils

    

    (2)查询具体的实现

  查询返回一个值(总条数之类)

      调用的是 queryForObject(String sql, Class<T> requiredType) 方法。

      第一个参数是sql语句,第二个参数是返回值类型的 class 对象

    

  查询返回对象

    原始的JDBC的方式实现

// 2.jdbc实现代码
@Test
public void testJDBC() {
    Connection conn = null;
    PreparedStatement psmt = null;
    ResultSet rs = null;
    
    try {
        // 加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        // 创建连接
        conn = DriverManager.getConnection("jdbc:mysql:///lianxi", "root", "root");
        // 编写sql语句
        String sql = "select * from user where username=?";
        // 预编译sql
        psmt = conn.prepareStatement(sql);
        // 设置参数值
        psmt.setString(1, "jack");
        // 执行sql
        rs = psmt.executeQuery();
        // 遍历结果集
        while(rs.next()) {
            // 得到返回结果值
            String username = rs.getString("username");
            String password = rs.getString("password");
            // 放到user对象里
            User user = new User();
            user.setPassword(password);
            user.setUsername(username);
            System.out.println(user);
        }
        
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally {
        try {
            rs.close();
            psmt.close();
            conn.close();
        } catch (Exception e2) {
            // TODO: handle exception
        }
    }
}

 

  jdbcTemplate 中我们使用 queryForObject(String sql, RowMapper<T> rowMapper, Object... args) 方法

  参数:

  (1)SQL语句

  (2) RowMapper 接口,类似于 DBUtils 里面 ResultSetHandler

  (3)可变参数

  

    我们自己实现RowMapper接口,并进行数据封装

  

 

 

  查询返回 list 集合

  我们使用 jdbcTemplate 中的  query(String sql, RowMapper<T> rowMapper, Object... args) 方法

  参数:

  (1)sql语句

  (2)RowMapper接口,自己写类实现数据封装(我们还可以用上面自己实现的MyRowMapper

  (3)可变参数(在这里我们sql语句中没有占位符,所以我们可变参数可以不传

   

 

posted @ 2018-12-25 10:42  花咖  阅读(262)  评论(0编辑  收藏  举报