Spring JDBCTemplate

Spring JDBCTemplate(必须掌握)

概述

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

开发步骤:

  1. 导入JdbcTemplate的Jar包

  2. 创建JdbcTemplate对象,创建对象依赖于DataSource数据源

    JDBCtemplate template = new JDBCTtemplate(new DataSource());

  3. 调用JDBCTemplate的方法来完成CRUD的操作

    • update();执行DML语句,增删改
    • queryForMap();查询结果将结果集封装成map集合,将列名作为key,将将值作为value将这条记录封闭为一个map集合
      • 注意:这个方法查询的结果集长度只能是1,就是只能查询一条记录
    • queryForList();查询结果将结果集封装成List集合
      • 注意将每一条记录封装成一个Map集合,再将Map集合封装成List集合中
    • query();查询结果,将结果封装为JavaBean对象
      • query的参数:RowMapper
        • 一般我们使用BeanPripertyRowMapper实现类,可以完成数据到JavaBean的自动封装
        • new BeanPropertyRowMapper<类型>(类型.class);
    • queryForObject():查询结果将结果封装为对象
      • 一般用于聚合函数的查询

注意:Spring JDBCTemplate的开发只专注于Sql语句,Sql的执行,Sql执行结果的处理,不需要关注获取数据库连接对象和释放资源

/**
     * 1.修改id为4记录的balance的金额为8888
     * 2.添加一条记录
     * 3.删除刚刚添加的记录
     * 4.查询id为1的记录,将其封装成Map集合
     * 5.查询所有记录,将其封装成List
     * 6.查询总记录数
     */
     
     
package com.haikang.jdbcTemplate;
/**
 * 1.修改id为4记录的balance的金额为8888
 * 2.添加一条记录
 * 3.删除刚刚添加的记录
 * 4.查询id为1的记录,将其封装成Map集合
 * 5.查询所有记录,将其封装成List
 * 6.查询所有记录将其封装成Account对象(就是JavaBean类)
 * 7.查询总记录数
 */
public class JdbcTemplate09 {

    //1.Jar包
    //2.创建数据源对象;配置基本属性
    ComboPooledDataSource source = new ComboPooledDataSource();

    //3.创建JdbcTemplate对象
        JdbcTemplate jdbcTemplate = new JdbcTemplate(source);

    @Test
//    1.修改id为4记录的balance的金额为8888
    public void test01(){
        //4.定义Sql语句
        String sql = "update account set balance=? where id=?";
        //5.执行Sql语句
        int update = jdbcTemplate.update(sql, 1688888888, 1);
        System.out.println(update);
    }

    @Test
    //2.添加一条记录
    public void test02(){
        //4.定义Sql
        String sql = "insert into account (name,balance) values(?,?)";
        //执行sql语句
        int update = jdbcTemplate.update(sql, "松竹", 168168);
        System.out.println(update);
    }

    @Test
//    3.删除刚刚添加的记录
    public void test03(){
        //4.定义Sql
        String sql = "delete from account where id=?";
        //执行Sql
        int update = jdbcTemplate.update(sql, 8);
        System.out.println(update);
    }

    @Test
    //4.查询id为1的记录,将其封装成Map集合
    public void test04(){
        //4.定义Sql
        String sql = "select * from account where id=?";
        //5.执行Sql
        Map<String, Object> stringObjectMap = jdbcTemplate.queryForMap(sql, 1);
        System.out.println(stringObjectMap);
        //{id=1, name=明天, balance=1.688888888E9}
    }

    @Test
    //5.查询所有记录,将其封装成List
    public void test05(){
        //4.定义Sql
        String sql = "select * from account";
        //5.执行Sql
        List<Map<String, Object>> maps = jdbcTemplate.queryForList(sql);
        for (Map<String, Object> map:
             maps) {
            System.out.println(map);
        }
        /**
         * {id=1, name=明天, balance=1.688888888E9}
         * {id=2, name=李四, balance=88888.0}
         * {id=3, name=湛江, balance=88888.0}
         * {id=4, name=雷州, balance=88888.0}
         * {id=5, name=西安, balance=88888.0}
         * {id=6, name=南宁, balance=88888.0}
         * {id=9, name=宇瑞, balance=1.688888888E9}
         * {id=11, name=松竹, balance=168168.0}
         */
    }

    @Test
    //6.查询所有记录将其封装成Account对象(就是JavaBean类)
    public void test06(){
        //4.定义Sql语句
        String sql = "select * from account";
        //5.执行Sql
        List<Account> lists = jdbcTemplate.query(sql, new RowMapper<Account>() {//自己实现RowMapper的方法
            @Override
            public Account mapRow(ResultSet resultSet, int i) throws SQLException {

                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                double aDouble = resultSet.getDouble(3);

                Account account = new Account(id,name,aDouble);

                return account;
            }
        });

        for (Account list:
             lists) {
            System.out.println(list);
            /**
             * Account{id=1, name='明', balance=1.688888888E9}
             * Account{id=2, name='李四', balance=88888.0}
             * Account{id=3, name='湛江', balance=88888.0}
             * Account{id=4, name='雷州', balance=88888.0}
             * Account{id=5, name='西安', balance=88888.0}
             * Account{id=6, name='南宁', balance=88888.0}
             * Account{id=9, name='宇瑞', balance=1.688888888E9}
             * Account{id=11, name='松竹', balance=168168.0}
             */
        }
    }

    @Test
    //6.查询所有记录将其封装成Account对象(就是JavaBean类)
    public void test07(){
        //4.定义Sql语句
        String sql = "select * from account";
        //5.执行Sql
        List<Account> lists = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Account.class));

        for (Account list:
             lists) {
            System.out.println(list);
            /**
             * Account{id=1, name='明', balance=1.688888888E9}
             * Account{id=2, name='李四', balance=88888.0}
             * Account{id=3, name='湛江', balance=88888.0}
             * Account{id=4, name='雷州', balance=88888.0}
             * Account{id=5, name='西安', balance=88888.0}
             * Account{id=6, name='南宁', balance=88888.0}
             * Account{id=9, name='宇瑞', balance=1.688888888E9}
             * Account{id=11, name='松竹', balance=168168.0}
             */
        }
    }

    @Test
    //7.查询总记录数
    public void test08(){
        //4.定义Sql语句
        String sql = "select count(?) from account";
        //5.执行Sql
        Integer total = jdbcTemplate.queryForObject(sql, new String[]{"id"},Integer.class);
        System.out.println(total);
    }

    @Test
    //7.查询总记录数
    public void test09(){
        //4.定义Sql语句
        String sql = "select count(id) from account";
        //5.执行Sql
        Integer total = jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(total);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值