jdbatemplate使用

时间:2021-07-04 03:38:38

jdbatemplate使用

 

 


 

 

  jdbatemplate使用jdbatemplate使用
public static void main(String[] args) throws SQLException {
        DataSource ds = new ComboPooledDataSource();
        JdbcTemplate jt = new JdbcTemplate(ds);
        String sql = "select * from tb_emp1 where id = ?";
        //jdbctemplate返回map集合
        Map<String, Object> map = jt.queryForMap(sql, 1);
        System.out.println(map);
    }
queryForMap方法使用
{id=1, name=xiaohei, deptId=1, salary=2000.0}

这个方法返回一个Map集合,但是只能返回一个数据集,否则报错

要想返回多个数据集要使用   queryForList  方法。

public static void main(String[] args) throws SQLException {
        DataSource ds = new ComboPooledDataSource();
        JdbcTemplate jt = new JdbcTemplate(ds);
        String sql = "select * from tb_emp1 where id = ? or id=?";
        //jdbctemplate返回map集合
//        Map<String, Object> map = jt.queryForMap(sql, 1);
        List<Map<String, Object>> maps = jt.queryForList(sql, 1,2);
        System.out.println(maps);
    }
[{id=1, name=xiaohei, deptId=1, salary=2000.0}, {id=2, name=haha, deptId=3, salary=500.0}]

但是在真实开发中使用最多的是吧数据封装成javabean对象,在封装到List中,所以就用到了query方法

@Test
    public void test(){
        // 真实开发中数据封装成Map或者List的情况较少,比较多的是封装成javabean对象,在封装成list,所以使用query方法 。
        //List<T> query(String var1, RowMapper<T> var2),参数中需要RowMapper接口
        DataSource ds = new ComboPooledDataSource();//获取连接池
        JdbcTemplate jt = new JdbcTemplate(ds);//获取jdbctemplate对象
        String sql = "select * from tb_emp1";
        List<Emp> list = jt.query(sql, new RowMapper<Emp>() {
            @Override
            public Emp mapRow(ResultSet rs, int i) throws SQLException {
                //获取值
                int id = rs.getInt("id");
                String name = rs.getString("name");
                double salary = rs.getDouble("salary");
                //封装到对象中
                Emp emp = new Emp();
                emp.setId(id);
                emp.setSalary(salary);
                emp.setName(name);
                return emp;
            }
        });
        System.out.println(list);

    }
[Emp{id=1, name=xiaohei, salary=2000.0}, Emp{id=2, name=haha, salary=500.0}]

但是从代码中可以看到,还是 太麻烦了,因为要自己实现RowMapper接口,实现这个接口时,里面的代码太麻烦了,

所以spring公司给我们封装好了实现类,可以供你使用

//public BeanPropertyRowMapper(Class<T> mappedClass),这个方法需要传参数,需要指定  类名.class文件
这个方法是spring公司提供的RowMapper的实现类,极大地简化了代码。
@Test
    public void test2(){
        DataSource ds = new ComboPooledDataSource();//获取连接池
        JdbcTemplate jt = new JdbcTemplate(ds);//获取jdbctemplate对象
        String sql = "select * from tb_emp1";
        //public BeanPropertyRowMapper(Class<T> mappedClass),这个方法需要传参数,需要指定  类名.class文件
        List<Emp> list = jt.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp emp : list) {
            System.out.println(emp);
        }
    }
Emp{id=1, name=xiaohei, salary=2000.0}
Emp{id=2, name=haha, salary=500.0}