Spring-004-jdbcTemplete基本操作

  1. spring框架是一站式框架 所以针对javaee三层结构每一层都有解决技术
  2. 在dao层使用jdbcTemplete
  3. spring对不同的持久层都多了对应的封装


    Spring-004-jdbcTemplete基本操作_第1张图片
    image
  4. jdbcTemplete是对idbc的封装

jdbcTemplete最基本的操作 CRUD

  1. 导入jar包 spring-jdbc + spring-tx + 数据库驱动
  2. 创建对象,设置数据库的信息
  3. 创建jdbcTemplete对象,设置数据源
  4. 调用jdbcTemplete对象里面的方法实现操作

增加

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

修改

    public void update(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "update user set password=? where username=?";
        int rows = jdbcTemplate.update(sql,"123","lily");
        System.out.println(rows);
    }

删除

public void delete(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "delete from user where username=?";
        int rows = jdbcTemplate.update(sql,"lily");
        System.out.println(rows);
    }

查询

jdbcTemplet实现查询,有接口RowMapper,jdbc针对这个借口没有提供实现类,得到不同的类型数据需要自己进行数据封装
jdbc实现代码

    public void testJDBC(){
        Connection conn = null;
        PreparedStatement psmt = null;
        ResultSet rs = null;
        
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //创建连接
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testspring","root","");
            //编写sql语句
            String sql = "select * from user where username=?";
            //预编译sql
            psmt = conn.prepareStatement(sql);
            //设置参数值
            psmt.setString(1, "lily");
            //执行sql
            rs = psmt.executeQuery();
            //遍历结果集
            while(rs.next()){
                //得到返回结果值
                String username = rs.getString("username");
                String password = rs.getString("password");
                System.out.println(username+password);
                //然后通过 new创建对象
            }
            
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                rs.close();
                psmt.cancel();
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
    }
  1. 使用jdbcTemplet查询返回某一个值
public void testCount(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select count(*) from user";
        int count = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(count);
    }
  1. 查询返回对象
    image

    参数介绍
    第一个参数是sql语句
    第二个参数是 RowMapper,是接口 类似于dbutils里面的接口
    第三个参数是可变参数
    public void testObject(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select * from user where username=?";
        //需要自己写类来实现接口,自己做数据封装
        User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(),"jack");
        System.out.println(user);
    }

MyRowMapper类 进行数据获取和封装对象

class MyRowMapper implements RowMapper{

    @Override
    public User mapRow(ResultSet rs, int num) throws SQLException {
        //num表示返回的结果条数 
        // TODO Auto-generated method stub
        //1 从结果集里面得到数据
        String username = rs.getString("username");
        String password = rs.getString("password");
        
        //2 把数据封装到对象里面
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        return user;
    }
    
}
  1. 查询返回list集合
    public void testList(){
        //设置数据库信息
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/testspring");
        dataSource.setUsername("root");
        dataSource.setPassword("");
        
        //创建jdbcTemplete对象,设置数据源
        JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
        String sql = "select * from user";
        //需要自己写类来实现接口,自己做数据封装
         List list = jdbcTemplate.query(sql, new MyRowMapper());
        System.out.println(list);
    }

你可能感兴趣的:(Spring-004-jdbcTemplete基本操作)