Spring JDBC(JDBCTemplate)

Spring JDBC

定义

Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象来简化JDBC的开发

使用步骤

  • 导入jar包:5个jar包

  • 创建JdbcTemplate对象,但依赖于数据源DataSource
    jdbcTemplate template = new jdbcTemplate(dataSource)

  • 调用jdbcTemplate的方法来完成CRUD(增删改查)的操作

1.update():执行DML语句。增、删、改语句

2.queryForMap():查询结果将结果集封装为map集合,
将列名作为key,将值作为value 将这条记录封装为一个map集合(查询的结果集长度只能是1)

3.queryForList():查询结果将结果集封装为list集合
将每一条记录封装为一个Map集合,再将Map集合装载到List集合中

4.query():查询结果,将结果封装为JavaBean对象
query的参数:RowMapper,
一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
new BeanPropertyRowMapper<类型>(类型.class)

5.queryForObject:查询结果,将结果封装为对象,一般用于聚合函数的查询

/*
在db3,emp表中,执行7种操作
 */
public class jdbcTemplateDemo2 {
    //Junit单元测试,可以让方法独立执行
    //1.获取JDBCTemplate对象
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    @Test
    //1.修改孙悟空工资为10000
    public void test1(){
        String sql="update emp set salary=10000 where id=1001";
        int count=template.update(sql);
        System.out.println(count);
    }
    @Test
    //2.添加一条记录
    public void test2(){
        String sql="insert into emp(id,ename,dept_id) values(?,?,?)";
        //用?防止sql注入
        int count = template.update(sql, 1015, "郭靖", 10);
        System.out.println(count);
    }
    @Test
    //3.删除刚才添加的记录
    public void test3(){
        String sql="delete from emp where id=?";
        int count = template.update(sql, 1015);
        System.out.println(count);
    }
    @Test
    //4.查询id=1的记录,将其封装为Map集合
    public void test4(){
        String sql="select * from emp where id=? ";
        Map map = template.queryForMap(sql, 1001);
        //queryForMap查询结果集合长度只能为1
        System.out.println(map);
    }
    @Test
    //5.查询所有记录,将其封装为list集合
    public void test5(){
        String sql="select * from emp ";
        List> list = template.queryForList(sql);
        //先将每条记录封装为Map集合,再将其装载入list中
        for(Map maps:list){
            System.out.println(maps);
        }
    }
    @Test
    //6.查询所有记录,将其封装为emp对象的list集合
    public void test6(){
        String sql="select * from emp";
        //将sql语句封装为javabean对象,自己创建实现类
        List list = template.query(sql, new RowMapper() {
            @Override
            //匿名内部类
            public Emp mapRow(ResultSet rs, int i) throws SQLException {
                Emp emp = new Emp();
                int id = rs.getInt("id");
                String ename = rs.getString("ename");
                int job_id = rs.getInt("job_id");
                int mgr = rs.getInt("mgr");
                Date joindate = rs.getDate("joindate");
                double salary = rs.getDouble("salary");
                double bonus = rs.getDouble("bonus");
                int dept_id = rs.getInt("dept_id");
                emp.setId(id);
                emp.setEname(ename);
                emp.setJob_id(job_id);
                emp.setMgr(mgr);
                emp.setJoindate(joindate);
                emp.setSalary(salary);
                emp.setBonus(bonus);
                emp.setDept_id(dept_id);
                return emp;
            }
        });
        for(Emp emp : list){
            System.out.println(emp);
        }
    }
    @Test
    //6.查询所有记录,将其封装为emp对象的list集合
    public void test6_2(){
        String sql="select * from emp";
        //将sql语句封装为javabean对象,利用系统默认实现类
        List list = template.query(sql, new BeanPropertyRowMapper(Emp.class));
        for(Emp emp:list){
            System.out.println(emp);
        }
    }
    @Test
    //7.查询总记录数
    public void test7(){
        String sql="select count(id) from emp";
        //传递回将来封装的返回值结果类型
        Long total = template.queryForObject(sql, long.class);
        System.out.println(total);
    }
}

你可能感兴趣的:(Spring JDBC(JDBCTemplate))