日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

为什么要用MyBatis-Spring JDBC

發布時間:2024/4/13 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 为什么要用MyBatis-Spring JDBC 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

除了DbUtils 之外,Spring 也對原生的JDBC 進行了封裝,并且給我們提供了一個模板方法JdbcTemplate,來簡化我們對數據庫的操作。第一個,我們不再需要去關心資源管理的問題。

第二個,對于結果集的處理,Spring JDBC 也提供了一個RowMapper 接口,可以把結果集轉換成Java 對象。

看代碼:比如我們要把結果集轉換成Employee 對象,就可以針對一個Employee創建一個RowMapper 對象,實現RowMapper 接口,并且重寫mapRow()方法。我們在mapRow()方法里面完成對結果集的處理。

public class EmployeeRowMapper implements RowMapper {@Overridepublic Object mapRow(ResultSet resultSet, int i) throws SQLException {Employee employee = new Employee();employee.setEmpId(resultSet.getInt("emp_id"));employee.setEmpName(resultSet.getString("emp_name"));employee.setEmail(resultSet.getString("emial"));return employee;} }

在DAO 層調用的時候就可以傳入自定義的RowMapper 類,最終返回我們需要的類型。結果集和實體類類型的映射也是自動完成的。

public List<Employee> query(String sql){new JdbcTemplate( new DruidDataSource());return jdbcTemplate.query(sql,new EmployeeRowMapper()); }

通過這種方式,我們對于結果集的處理只需要寫一次代碼,然后在每一個需要映射的地方傳入這個RowMapper 就可以了,減少了很多的重復代碼。

但是還是有問題:每一個實體類對象,都需要定義一個Mapper,然后要編寫每個字段映射的getString()、getInt 這樣的代碼,還增加了類的數量。

所以有沒有辦法讓一行數據的字段,跟實體類的屬性自動對應起來,實現自動映射呢?當然,我們肯定要解決兩個問題,一個就是名稱對應的問題,從下劃線到駝峰命名;

第二個是類型對應的問題,數據庫的JDBC 類型和Java 對象的類型要匹配起來。

我們可以創建一個BaseRowMapper<T>,通過反射的方式自動獲取所有屬性,把表字段全部賦值到屬性。

上面的方法就可以改成:

return jdbcTemplate.query(sql,new BaseRowMapper(Employee.class));

這樣,我們在使用的時候只要傳入我們需要轉換的類型就可以了,不用再單獨創建一個RowMapper。

我們來總結一下,DbUtils 和Spring JDBC,這兩個對JDBC 做了輕量級封裝的框架,或者說工具類里面,都幫助我們解決了一些問題:

1、無論是QueryRunner 還是JdbcTemplate,都可以傳入一個數據源進行初始化,也就是資源管理這一部分的事情,可以交給專門的數據源組件去做,不用我們手動創建和關閉;

2、對操作數據的增刪改查的方法進行了封裝;

3、可以幫助我們映射結果集,無論是映射成List、Map 還是實體類。

但是還是存在一些缺點:

1、SQL 語句都是寫死在代碼里面的,依舊存在硬編碼的問題;

2、參數只能按固定位置的順序傳入(數組),它是通過占位符去替換的,不能自動映射;

3、在方法里面,可以把結果集映射成實體類,但是不能直接把實體類映射成數據庫的記錄(沒有自動生成SQL 的功能);

4、查詢沒有緩存的功能。

?

總結

以上是生活随笔為你收集整理的为什么要用MyBatis-Spring JDBC的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。