spring整合jdbc(二)
在上次的操作中只是简单的利用了spring容器中注入dataSource元素来建立数据库的连接,而没有发挥出spring框架的核心作用。这里在继续对spring进行深入的理解:
在进行数据库操作时,我们每次都要进行一次链接,一来很费时费力,二来对以后的开发起不到很好的作用。
因此这里我们借助spring对JDBC的强大支持利用JDBCTemplate类来对JDBC的控制(调用、执行、查询、更新),JDBCTemplate的操作步骤如下:
- 打开数据库连接。
- 指定在连接上执行的语句。
- 设置要求的参数并执行语句。
- 如需求,可以得到Reslutset,迭代返回结果,接着不管任何异常关闭Reslutset。
- 运行每次迭代的代码,若没有要求迭代,只返回单个值。
- 处理SQLException事例。
- 处理所有活动的事物(判断是否提交,回滚)。
- 关闭链接
这里我们用到的JDBCTemplate的类函数:
query方法:查询存数据的方法,一大堆的函数啊。我们只用到了(ArrayList<Student>) jdbcTemplate.query("select * from student", new StudentRowMapper());
update方法:一般是修改啊更新啊删除啊操作,int update(string ,Object[],int[])string则是我们写的sql语句了,object[]是我们在javabean中的定义的类型参数,int[]类型参数的类型。例如:jdbcTemplate.update("delete from student where id=?",new Object[]{id},
execute方法:没有来得及看呢。
这里是现实类StudentServiceImpl方法体
其中StudentRowMapper是按照重载函数RowMapper的要求写的:
最后的测试方法SpringJDBC:
其中为了测试重载函数的作用,加了一条语句System.out.println("您的年龄是"+student.getAge());
结果没有取到age的值,证明了RowMapper的作用RowMapper.mapRow(ResultSet,int)方法返回的对象曾加到list上,并将List返回给调用者