zoukankan      html  css  js  c++  java
  • 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语句中没有占位符,所以我们可变参数可以不传

       

  • 相关阅读:
    一道题
    Codeforces679C. Bear and Square Grid
    CF671C. Ultimate Weirdness of an Array
    CF899F. Letters Removing
    BZOJ5089: 最大连续子段和
    BZOJ2388: 旅行规划
    Vue用v-for实现结构、数据、样式分离(示例2)
    java-JSON的生成与解析
    Vue用v-for实现结构、数据、样式分离(示例1)
    08.记录操作CURD(增删改查)
  • 原文地址:https://www.cnblogs.com/xb1223/p/10172063.html
Copyright © 2011-2022 走看看