Spring JDBC 模板

7.spring JDBC: JDBC Template模板
##spring 框架对JDBC的简单封装,提供了JDBCTemplate对象简化JDBC的开发
*步骤
1.导入jar包
2.创建JDBCTemplate对象,依赖于数据源DataSource对象
*JDBCTemplate template = new JDBCTemplate(ds);
3.调用JDBCTemplate对象的方法来完成操作
*update()–>增删改语句,使用的是prepareStatement的sql 格式,这个例如,update(sql,第一个?的赋值 , 第二个?的赋值,…)
*queryForMap():查询结果集封装成map集合
*queryForList():查询结果封装为List集合
*query():查询结果,将结果封装为JavaBean对象
*query的参数:RowMapper
*一般我们在使用BeanPropertyRowMapper<类型>(类型的字节码对象)(实现了RowMapper接口),因此可以使用他们来实现接口回调来完成数据的自动封装
*new BeanPropertyRowMapper<类型>(类型的字节码对象)
*queryForObject:查询结果,将结果封装为Object对象
4.练习
*需求
1.查询所有记录将其封装为List集合
*返回得到记录的集合,一个map获取一条记录,所以这个是记录的集合,将map作为排队元素 List<Map<String,Object>> list = template.queryForList(sql,…);
2.查询id为1的记录所有记录将其封装为Map集合 返回记录只能是一条记录,否则会报错;因为字段名当成map的键,记录当成值。
*一条记录封装成一个map集合(期望一条记录)
3.查询所有记录,将其封装为对象Emp对象的List集合
*使用query()方法(期间会使用到接口参数,就需要使用内部类来重写接口中的方法),来使用Emp来记录信息,列成List集合类返回。
重点)其中,如果自己使用的是自定类的时候,使用基本数据类型是不能接受数据库表记录中的NULL的,因此在读取值中含有NULL的时候,就是使用引用数据类型的,不使用基本数据类型 比如 double–>Double ,int—>Integer ,boolean—>Boolean 可以接受为NULL的返回值
*案例代码:
//使用内部匿名类进行对自己封装的类的初始化
Listlist = template.query(sql, new RowMapper(){

	        @Override  
	  public Emp mapRow(ResultSet resultSet, int i) throws SQLException {  
	            Emp emp = new Emp();  
	  int empno = resultSet.getInt("empno");  
	  String ename = resultSet.getString("empno");  
	              
	  String job = resultSet.getString("job");  
	  int mgr = resultSet.getInt("mgr");  
	  Date hiredate = resultSet.getDate("hiredate");  
	  double sal = resultSet.getDouble("sal");  
	  double comm = resultSet.getDouble("comm");  
	  int deptno = resultSet.getInt("deptno");  
	  
	  emp.setEmonp(empno);  
	  emp.setEname(ename);  
	  emp.setJob(job);  
	  emp.setMgr(mgr);  
	  emp.setHiredate(hiredate);  
	  emp.setSal(sal);  
	  emp.setComm(comm);  
	  emp.setDeptno(deptno);  
	 return emp;  
	  }  
	    });  //内部匿名类的写法  
	  Iterator<Emp> iterator = list.iterator();  
	 while (iterator.hasNext()){  
	        System.out.println(iterator.next());  
	  }  
	}
				
			4.查询总记录数(就是利用select查询得到的是一个数,不是一个记录的使用使用的方法)
				*Long long = template.queryForObject(sql,Long.class(long的字节码对象))
			
				*补充知识:注解@Test,可以使用其注释部分单独运行,测试
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值