Spring--12jdbcTemplate

1       概述

1.1  一站式框架

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

(2)在dao层,使用 jdbcTemplate

 

1.2  spring对不同的持久化层技术都进行封装

          jdbcTemplate对jdbc进行封装

 

1.3  导包

1 导入jdbcTemplate使用的jar包

 

 

2       crud操作

2.1  概述

2.2  增加

1 导入jdbcTemplate使用的jar包

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

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

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

 

// 1 添加操作
   @Test
   public void add() {
      //       设置数据库信息
      DriverManagerDataSource dataSource = new DriverManagerDataSource();
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql:///spring_03");
      dataSource.setUsername("root");
      dataSource.setPassword("root");
 
      //       创建jdbcTemplate对象,设置数据源
      JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
      //       调用jdbcTemplate对象里面的方法实现操作
      //创建sql语句
      String sql = "insert into user values(?,?)";
      int rows =jdbcTemplate.update(sql, "lucy","250");
      System.out.println(rows);
     }

2.3  修改

//2 修改操作
   @Test
   public void update() {
      //设置数据库信息
      DriverManagerDataSource dataSource = new DriverManagerDataSource();
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql:///spring_03");
      dataSource.setUsername("root");
      dataSource.setPassword("root");
 
      //创建jdbcTemplate对象
      JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
 
      //调用jdbcTemplate里面的方法实现 update方法
      String sql = "update user set password=? whereusername=?";
      int rows =jdbcTemplate.update(sql, "1314","lucy");
      System.out.println(rows);
     } 

2.4  删除

//3 删除操作
   @Test
   public void delete() {
      //设置数据库信息
      DriverManagerDataSource dataSource = new DriverManagerDataSource();
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql:///spring_03");
      dataSource.setUsername("root");
      dataSource.setPassword("root");
 
      //创建jdbcTemplate对象
      JdbcTemplate jdbcTemplate = newJdbcTemplate(dataSource);
 
      //调用update方法实现删除
      String sql = "delete from user whereusername=?";
      int rows =jdbcTemplate.update(sql, "lucy");
      System.out.println(rows);
   } 

2.5  查询


2.5.1   查询返回某一个值

(1)第一个参数是sql语句

(2)第二个参数 返回类型的class

@Test
      public void testCount() {
         //设置数据库信息
         DriverManagerDataSourcedataSource = newDriverManagerDataSource();
         dataSource.setDriverClassName("com.mysql.jdbc.Driver");
         dataSource.setUrl("jdbc:mysql:///spring_03");
         dataSource.setUsername("root");
         dataSource.setPassword("root");
        
         //创建jdbcTemplate对象
         JdbcTemplatejdbcTemplate = newJdbcTemplate(dataSource);
        
         //调用方法得到记录数
         Stringsql = "select count(*) from user";
         //调用jdbcTemplate的方法
         int count =jdbcTemplate.queryForObject(sql, Integer.class);
         System.out.println(count);
      }

Jdbc实现

//2 jdbc实现代码
   @Test
   public void testJDBC() {
      Connectionconn = null;
      PreparedStatementpsmt = null;
      ResultSetrs = null;
      //加载驱动
      try {
         Class.forName("com.mysql.jdbc.Driver");
         //创建连接
         conn= DriverManager.getConnection("jdbc:mysql:///spring_03", "root","root");
         //编写sql语句
         Stringsql = "select * from user whereusername=?";
         //预编译sql
         psmt= conn.prepareStatement(sql);
         //设置参数值
         psmt.setString(1,"lucy");
         //执行sql
         rs= psmt.executeQuery();
         //遍历结果集
         while(rs.next()) {
            //得到返回结果值
            Stringusername = rs.getString("username");
            Stringpassword = rs.getString("password");
            //放到user对象里面
            Useruser = newUser();
            user.setUsername(username);
            user.setPassword(password);
 
            System.out.println(user);
         }
 
      }catch(Exception e) {
         e.printStackTrace();
      }finally{
         try {
            rs.close();
            psmt.close();
            conn.close();
         }catch(SQLException e) {
            e.printStackTrace();
         }
      }
     }

 

2.5.2   查询返回对象

第一个参数是sql语句

第二个参数是 RowMapper,是接口,类似于dbutils里面接口

第三个参数是可变参数

//3 查询返回对象
   @Test
   public void testObject() {
      //设置数据库信息
      DriverManagerDataSourcedataSource = newDriverManagerDataSource();
      dataSource.setDriverClassName("com.mysql.jdbc.Driver");
      dataSource.setUrl("jdbc:mysql:///spring_03");
      dataSource.setUsername("root");
      dataSource.setPassword("root");
 
      //创建jdbcTemplate对象
      JdbcTemplatejdbcTemplate = newJdbcTemplate(dataSource);
 
      //写sql语句,根据username查询
      Stringsql = "select * from user whereusername=?";
      //调用jdbcTemplate的方法实现
      //第二个参数是接口 RowMapper,需要自己写类实现接口,自己做数据封装
      Useruser = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "mary");
      System.out.println(user);
     }

class MyRowMapper implements RowMapper<User> {
 
   @Override
   public User mapRow(ResultSetrs, intnum) throwsSQLException {
      // 1 从结果集里面把数据得到
      Stringusername = rs.getString("username");
      Stringpassword = rs.getString("password");
 
      // 2 把得到数据封装到对象里面
      Useruser = newUser();
      user.setUsername(username);
      user.setPassword(password);
 
      return user;
     }


 

2.5.3   查询返回list集合

(1)  sql语句

(2)   RowMapper接口,自己写类实现数据封装

(3)   可变参数

 

2.6  批量操作

batchUpdate(String sql, List<Object[]> batchArgs)

 

/**
     * 批量更新:批量insert,update,delete
     * 最后一个参数时候 Object[] 的list 类型
     */
    @Test
    public void testBatchUpdate() throws SQLException {
       String sql = "INSERTINTO employees(last_name , email , dept_id) VALUES(? ,? ,?)";
      
       List<Object[]> lists = new ArrayList<>();
       lists.add(new Object[]{"AA", "aa@163.com" , 10});
       lists.add(new Object[]{"bb", "bb@163.com" , 9});
       lists.add(new Object[]{"cc", "cc@163.com" , 8});
       lists.add(new Object[]{"dd", "dd@163.com" , 7});
       lists.add(new Object[]{"ee", "ee@163.com" , 6});
      
       jdbcTemplate.batchUpdate(sql, lists);
    } 

3       Spring配置连接池和dao使用jdbcTemplate

3.1  spring配置c3p0连接池

第一步 导入jar包

第二步 创建spring配置文件,配置连接池

       把代码在配置文件中进行配置

 

3.2  dao使用jdbcTemplate

(1)创建service和dao,配置service和dao对象,在service注入dao对象

(2)创建jdbcTemplate对象,把模板对象注入到dao里面


(3)在jdbcTemplate对象里面注入dataSource

 

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值