JdbcTemplate执行DQL语句

一.queryXxx方法:

1.query();

//参数1:为需要执行的sql语句  参数2:RowMapper接口的实现类 BeanPropertyRowMapper对象 此对象可以自动的将数据库中的字段与标准的JavaBean匹配,创建一个新的JaveBean实例 返回一个list集合  参数3:可变长参数,是要执行的sql语句的真实参数值

注意:1.底层是通过反射实现  使用无参构造创建实例 并且通过setXxx()方法对属性进行赋值 

2.去掉set后忽略大小写只要能和数据库中表字段匹配就可以赋值

3.数据库字段多余实体字段 不报错 顶多不赋值
4.实体字段多余数据库字段 不报错 顶多不赋值
5.写实体类必须使用 包装类  因为数据库值中有null 而基本类型没有null 所以必须使用 包装类(int没有null Integer 有null)


 

@Test
    public void quereyMethod(){
        //query()能够自动将数据库中的字段值封装成一个标准的java类对象
        //通过无参构造创建instance
        //通过set方法进行属性赋值操作 要求只要方法名去掉set后 忽略大小写能够与数据库中的字段名想匹配就可以封装
        JdbcTemplate jdbcTemplate =new JdbcTemplate(DruidDataSourceUtil.getDataSource());
        String sql="SELECT * FROM `student`";
        Object[] params={

        };
        //参数1 要执行的sql语句
        //参数2 RowMapper对象 RowMapper是一个接口 所以使用实现类BeanPropertyRowMapper 能够自动进行封装
        //参数3 可变长参数 真实的参数
        //返回的是一个list集合 可以自己转型
        ArrayList query =(ArrayList) jdbcTemplate.query(sql, new BeanPropertyRowMapper(Student.class), params);
        System.out.println(query);
    }

2.queryForObject();

//此方法有两种用处 

//(1)用来查询单行单列的一个数据 

//参数1:sql语句 参数2:返回值类型的class对象 参数3:可变长参数 执行sql语句所需要的参数

 @Test
    //queryForObject返回一个单行单列的数值
    public void queryForObject1(){
        JdbcTemplate jdbcTemplate=new JdbcTemplate(DruidDataSourceUtil.getDataSource());
        String sql="select name from student where id=1";
        //有两种用法
        //返回单行单列的一个值
        //参数1 要执行的sql语句
        //参数2 返回结果的类型 和 数据库中的类型匹配
        String s = jdbcTemplate.queryForObject(sql, String.class);
        System.out.println(s);
    }

//(2)用来返回一封装好的javaBean对象

//参数1:sql语句 参数2: BeanPropertyRowMapper(javaBean.class)对象 参数3:可变长参数 执行sql语句所需要的参数

 @Test
    //queryForObject返回一个封装好的对象
    public void queryForObject2(){
        JdbcTemplate jdbcTemplate =new JdbcTemplate(DruidDataSourceUtil.getDataSource());
        String sql="select * from student where id=1";
        Object object = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(Student.class));
        System.out.println(object);
    }

3.queryForMap();

//查询结果是一行多列的结果  返回一个map集合 集合的key存放数据库的表头 value用来存放 值

//参数1:sql语句 参数2:可变长参数 执行sql语句所需要的参数

 @Test
    public void queryForMapMethod() throws Exception {
        JdbcTemplate jdbcTemplate =new JdbcTemplate(DruidDataSourceUtil.getDataSource());
        String sql="select * from student where id=2";
        //queryForMap()方法查询一行多列 返回一个map集合 key存出列表头 value 存储真实的值
        Map stringObjectMap = jdbcTemplate.queryForMap(sql);
        System.out.println(stringObjectMap);
    }

4.queryForList();

//查询结果是多行多列的结果  返回一个lsit集合,集合中存放的是一个map集合map集合的key存放数据库的表头 value用来存放 值

//参数1:sql语句 参数2:可变长参数 执行sql语句所需要的参数

 @Test
    public void queryForListMethod() {
        //需要一个dataSource
        JdbcTemplate jdbcTemplate=new JdbcTemplate(DruidDataSourceUtil.getDataSource());
        //sql语句
        String sql="select * from student where id BETWEEN ? AND ?";
        //queryForList()方法 查询多行多列 返回一个list(Map<,>)<>集合 list集合中存放的是map集合
        // 参数1:需要执行的sql语句  参数2: 可变参数的真实参数
        Object[] params={
                1,3
        };
        List> maps = jdbcTemplate.queryForList(sql,params);
        System.out.println(maps);
    }


 

你可能感兴趣的:(JDBC)