在上次的操作中只是簡單的利用了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返回給調用者