JdbcTemplate执行DQL语句

本文详细介绍了JdbcTemplate在执行DQL语句时的方法,包括query()、queryForObject()、queryForMap()和queryForList()。query()用于返回一个包含多个JavaBean实例的list,queryForObject()可获取单行单列数据或封装JavaBean对象,queryForMap()返回一行多列结果的Map集合,而queryForList()则返回多行多列结果的Map列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.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<Student> query =(ArrayList<Student>) 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<String, Object> 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<Map<String, Object>> maps = jdbcTemplate.queryForList(sql,params);
        System.out.println(maps);
    }


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值