Spring JDBC:使用JDBCTemplate对象简化JDBC的开发

Spring JDBC

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

步骤:

1.导入jar包
2.创建JdbcTemplate对象,依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(ds);

3.调用JdbcTemplate的方法来完成CURD的操作

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

4.练习
需求:

  • 1.修改1号数据的salary为10000;
  • 2.添加一条记录
  • 3.删除刚才添加的记录
  • 4.查询id为1的记录,将其封装为Map集合
  • 5.查询所有记录,将其封装为List
  • 6.查询所有记录,将其封装为Emp对象的List集合
  • 7.查询总的记录数
package cn.laowang.jdbctemplate;

import cn.laowang.datasource.utils.JDBCUtils;
import cn.laowang.domian.Emp;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

public class JdbcTemplateDemo02 {

   //Junit单元测试,可以让方法独立运行
   //1.获取JdbcTemplate对象
   private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDatasource());
    /**
     * 1.修改1001号数据的salary为10000;
     */
    @Test
    public void test01(){

     //2.定义sql
        String sql = "update emp set salary = 10000 where id = 1001";
     //3.执行sql
        int count = template.update(sql);
        System.out.println(count);  //1
    }

    /**
     * 2.添加一条记录
     */
    @Test
    public void test02(){
   String sql = "insert into emp(id,ename,dept_id) values (?,?,?) ";
        int count = template.update(sql,1015,"郭靖",10);
        System.out.println(count); //1
    }
/**
 * 3.删除刚才添加的记录
 */
@Test
public void test03(){
  String sql = "delete from emp where id = ?";
    int count = template.update(sql, 1015);
    System.out.println(count); //1
}
/**
 * 4.查询id为1的记录,将其封装为Map集合
 * 注意这个方法查询的结果集长度只能是1
 */
@Test
public void test04(){
  String sql = "select * from emp where id = ?";
    Map<String, Object> map = template.queryForMap(sql, 1001);
    System.out.println(map);
    //{id=1001, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}
   }
    @Test
    public void test04_1(){
        String sql = "select * from emp where id = ? or id = ?";
        Map<String, Object> map = template.queryForMap(sql, 1001,1002);
        System.out.println(map);
        //注意这个方法查询的结果集长度只能是1
   }

    /**
     * 5.查询所有记录,将其封装为List
     */
    @Test
    public void test05(){
      String sql = "select * from emp";
        List<Map<String, Object>> list = template.queryForList(sql);
        for (Map<String, Object> stringObjectMap : list) {
            System.out.println(stringObjectMap);
        }
    }
    /**
     * 6.查询所有记录,将其封装为Emp对象的List集合
     */
    @Test
    public void test06(){
     String sql = "select * from emp";
        List<Emp> list = template.query(sql, new RowMapper<Emp>() {
            @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);
        }
    }

    /**
     * 6.1 查询所有记录,将其封装为Emp对象的List集合
     */
    @Test
    public void test06_01(){
        String sql = "select * from emp";
        List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp emp : list) {
            System.out.println(emp);
        }
    }
    /**
     *7.查询总的记录数
     * 聚合函数的查询
     */
    @Test
      public void test07(){
        String sql = "select count(id) from emp";
        Long total = template.queryForObject(sql, long.class);
        System.out.println(total);  //14
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值