从JDBC连接池到Mybatis(JdbcTemplate篇)

三:Spring的JDBCTemplate

   介绍:

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

   使用步骤:

                1:导入jar

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

                      JdbcTemplate template = new JdbcTemplate(dataSource)

                3:调用JdbcTemplate的方法来完成CRUD操作

                      常用方法:update() : 执行DML语句。insert,update,delete语句;

                                        queryForMap() : 执行select,将结果集封装为map集合;

                                        queryForList() : 执行select,将结果集封装为list集合;

                                        query() : 执行select,将结果集封装为JavaBean对象;

                                        queryForObject() : 执行select,将结果集封装为数据类型的对象;

测试案例:
package JDBCTemplate;

import Druid.JdbcUtils;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.Scanner;

public class JdbcTemplateDemo00 {
    public static void main(String[] args) {
        //导入jar包
        //创建JDBCTemplate对象
        JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());
        //定义SQL
        String sql = "update tb_item set price = ? where id = ?";

        //获取控制台输入
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("请输入price:");
        Integer price = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("请输入id:");
        Integer id = scanner2.nextInt();

        //调用方法
        int i = template.update(sql,price,id);
        System.out.println(i);
    }
}
常用方法测试案例:
package JDBCTemplate;

import Druid.JdbcUtils;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import pojo.Item;

import java.math.BigDecimal;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class JdbcTemplateDemo01 {

    JdbcTemplate template = new JdbcTemplate(JdbcUtils.getDataSource());

    //update()案例:修改价格
    @Test
    public void test01(){
        String sql = "update tb_item set price = 1000 where id = 875724";
        int count = template.update(sql);
        System.out.println(count);
    }

    //queryForMap()案例:查询单个对象
    @Test
    public void test02(){
        String sql = "select * from tb_item where id = 875724";
        /**
         * queryForMap()方法将结果集封装为map集合,
         *  将列名作为key,将值作为value,将这条记录封装为一个map集合
         *  这个方法查询的结果集长度只能是1
         */
        Map<String,Object> map = template.queryForMap(sql);
        System.out.println(map);
    }

    //queryForList()案例:查询多个对象
    @Test
    public void test03(){
        /**
         * queryForList()将结果集封装为list集合,
         *  这个方法是把每一条记录封装为一个map集合,在将map集合装载到list集合中
         */
        String sql = "select * from tb_item where id in (875724,983253)";
        List<Map<String,Object>> list = template.queryForList(sql);
        for (Map<String, Object> map : list) {
            System.out.println(map);
        }
    }

    //query() 案例:查询对象 自己重写RowMapper的mapRow()方法
    @Test
    public void test04(){
        String sql = "select * from tb_item";
        //匿名内部类写法
        List<Item> query = template.query(sql, new RowMapper<Item>() {
            //重写RowMapper的mapRow方法
            @Override   
            public Item mapRow(ResultSet rs,int i)throws SQLException{
                Item item = new Item();
                Long id = rs.getLong("id");
                String title = rs.getString("title");
                String sellPoint = rs.getString("sell_point");
                BigDecimal price = rs.getBigDecimal("price");
                Integer num = rs.getInt("num");
                String barcode = rs.getString("barcode");
                String image = rs.getString("image");
                Long cid = rs.getLong("cid");
                Integer status = rs.getInt("status");
                Date created = rs.getDate("created");
                Date updated = rs.getDate("updated");
                item.setId(id);
                item.setTitle(title);
                item.setSellPoint(sellPoint);
                item.setPrice(price);
                item.setNum(num);
                item.setBarcode(barcode);
                item.setImage(image);
                item.setCid(cid);
                item.setStatus(status);
                item.setCreated(created);
                item.setUpdated(updated);
                return item;
            }
        });
        for (Item item : query) {
            System.out.println(item);
        }
    }

    //query() 案例:查询对象 使用SpringTemplate提供的实现类
    @Test
    public void test05(){
        /**
         * RowMapper
         *  一般我们使用BeanpropertyRowMapper实现类,
         *  可以完成数据到JavaBean的自动封装
         *  new BeanPropertyRowMapper<实体类>(实体类.class)
         */
        String sql = "select * from tb_item";
        List<Item> query = 
          template.query(sql,new BeanPropertyRowMapper<Item>(Item.class));
        for (Item item : query) {
            System.out.println(item);
        }
    }

    // queryForObject() 案例:查询条数
    @Test
    public void test06(){
        /**
         * 一般用于聚合函数的查询
         */
        String sql = "select count(0) from tb_item";
        int i = template.queryForObject(sql,int.class);
        System.out.println(i);
    }
}

本文只是个人学习内容整理的笔记,如有侵权,即联系870013269@qq.com删除

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值