数据库7JDBC——Spring JDBCTemplate的使用

Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发.
目的: 简化JDBC编程

需要导入jar包 JdbcTemplate

使用步骤:

1.导入jar包
2.创建JdbcTemplate对象,依赖于DataSource

JdbcTemplate template = new JdbcTemplate(ds);

3.调用JdbcTemplate的方法来完成CRUD的操作
方法:
update() 执行DML语句, 增删改语句
queryForMap() 查询结果将结果集封装为map集合

注意: 这个方法查询的结果集长度只能为1, 将列名作为key, 值作为value封装为一个map集合

queryForList() 查询结果将结果集封装为list集合,将每一条记录封装到map集合中, 然后再将map装入到List集合中
query() 查询结果, 将结果封装为JavaBean对象
queryForList() 查询结果将结果集封装为list集合,将每一条记录封装到map集合中, 然后再将map装入到List集合中
query() 查询结果, 将结果封装为JavaBean对象

query的参数: RowMapper
1、一般我们使用BeanPropertyRowMapper实现类,可以完成数据到JavaBean的自动封装
2new BeanPropertyRowMapper<类型>(类型.class)

queryForObject() 查询结果, 将结果封装为对象, 一般用来执行一些聚合函数的

使用JdbcTemplate练习

/*
 *     
 *      练习:
 *          1. 修改1号数据的 salary为10000
 *          2. 添加一条记录
 *          3. 删除刚才添加的记录
 *          4. 查询id为1的记录, 将其封装为map集合
 *          5. 查询所有记录, 将其封装为list
 *          6. 查询所有记录, 将其封装完为Emp对象的List集合
 *          7. 查询总记录数
 */
public class JdbcTemplateDemo2 {

    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    // Junit单元测, 可以让方法独立执行

    /**
     * 修改1号数据的 salary为10000
     */
    @Test
    public void test1() {
        //1. 获取JDBCTemplate对象
        //2. 定义sql
        String sql = "UPDATE emp SET salary = ? WHERE id = ?";
        //3. 执行sql 并给 ? 赋值
        int count = template.update(sql, 20000, 1015);
        System.out.println(count);
    }

    /**
     * 添加一条记录
     */
    @Test
    public void test2() {
        String sql = "INSERT INTO emp(id, ename, dept_id) VALUES(?, ?, ?)";
        int count = template.update(sql, 1015, "朝阳", 10);
        System.out.println(count);

    }

    /**
     * 删除刚添加的记录
     */
    @Test
    public void test3() {
        String sql = "DELETE FROM emp WHERE id = ?";
        int count = template.update(sql, 1015);
        System.out.println(count);
    }

    /**
     * 查询id为1的记录, 将其封装为map集合
     */
    @Test
    public void test4() {
        String sql = "SELECT * FROM emp WHERE id = ?";
        Map<String, Object> map = template.queryForMap(sql, 1001);
        System.out.println(map);
    }

    /**
     * 查询所有记录, 将其封装为list
     */
    @Test
    public void test5() {
        String sql = "SELECT * FROM emp";
        List<Map<String, Object>> list = template.queryForList(sql);
        for (Map<String, Object> map : list) {
            System.out.println(map);
        }
    }

    /**
     * 查询所有记录, 将其封装完为Emp对象的List集合
     */
    @Test
    public void test6() {
        String sql = "SELECT * FROM emp";
        List<Emp> list = template.query(sql, new RowMapper<Emp>() {
            Emp emp;

            // 此方法每调用一次就会封装一个emp对象返回,并存储到List
            @Override
            public Emp mapRow(ResultSet rs, int i) throws SQLException {

                // 获取数据
                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对象, 并赋值
                emp = new Emp();
                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);
        }
    }

    /**
     * 查询所有记录, 将其封装完为Emp对象的List集合
     */
    @Test
    public void test6_2() {
        String sql = "SELECT * FROM emp";
        List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp emp : list) {
            System.out.println(emp);
        }
    }

    /**
     * 查询总记录数
     */
    @Test
    public void test7() {
        String sql = "SELECT COUNT(id) FROM emp";
        Long total = template.queryForObject(sql, Long.class);
        System.out.println(total);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值