Let's Encrypt 免費 SSL 證書續期
阿新 • • 發佈:2020-09-03
1.歷史
Apache Google GitHub
IBatis Mybatis Mybatis
2.Mybatis的作用
1 它支援普通的SQL 操作 以及 儲存過程的呼叫
2 它是一個高階的ORM框架 (以面向物件的思想操作資料庫)
3 它封裝了幾乎的jdbc操作 以及引數的手工設定
4 自動檢索結果集(自動把結果集轉換成物件 甚至關聯的物件)
3.MyBatis 框架的構成
1 實體bean 封裝資料資訊 2 SQL 定義檔案 封裝SQL語句的XML 3 主配置檔案 定義連線資料庫的資訊的 載入sql定義檔案 等 4 框架的API 涉及到SqlSession物件的建立 還有SqlSession 對應的API 主要完成增刪改查
4.以根據id 查詢銀行賬戶為例 編寫Mybatis程式
1 建立一個專案 匯入jar包(mybatis.jar ojdbc6.jar)
2 根據表 建立對應的實體類
3 編寫SQL 定義檔案 (拷貝sql定義的模板到一個包中)
<mapper namespace="com.xdl.dao.DeptMapper"> <!-- 定義SQL語句 --> <select id="findById" parameterType="int" resultType="com.xdl.entity.Bank"> select * from bank where bid = #{bid} </select> </mapper>
4 拷貝主配置檔案模板到src下 修改對應的資訊
5 使用Mybatis的API 獲取SqlSession 物件 使用這個物件完成對應的sql操作
工具類 public class SqlSessionUtil { private static SqlSessionFactory ssf; static { SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); // 得到一個SqlSessionFactory 型別的物件 InputStream inputStream = Bank.class.getClassLoader().getResourceAsStream("sqlmap-config.xml"); ssf = ssfb.build(inputStream); } public static SqlSession getSqlSession(){ try { return ssf.openSession(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
5.Mapper 對映器 ---- 根據規則設計DAO介面 可以自動產生實現類
1 DAO 介面的方法名 必須和 SQL 定義檔案中 SQL語句的id保持一致
2 介面方法的返回值型別 一般和resultType 保持一致
查詢語句如果返回單值 那使用 resultType
查詢語句如果可能返回多個值 則使用List<resultType對應的型別>
對DML(insert delete update) 可以是返回void 也可以返回int 推薦返回int
3 介面方法的引數型別 和 parameterType 保持一致
如果沒有 parameterType 則引數可以任意
4 SQL 定義檔案中的namespace 必須是 包名.介面名
Mybatis 多個引數的處理
1 通過Map 或者 物件型別 包裝多個引數
2 通過在sql 語句中 使用 index 對引數進行編號 編號從 0開始
3 也可以使用 param1 等對引數進行編號 編號從 param1 開始
4 @Param("引數名") 設定在介面方法的引數上
分頁的實現
1 rownum
按照acc_money 排序 一頁顯示 X 條 顯示 第 n 頁資料
pageSize:每頁顯示條數 pageNumber:當前頁
<select id="findBankListBypageInfo" resultType="com.xdl.entity.Bank">
select * from
(select rownum r,t.* from
(select * from bank order by money) t
where rownum < #{pageSize}*#{pageNumber} + 1
) where r > ((#{pageNumber}-1)*#{pageSize})
</select>
使用分頁外掛 ---- 根據某個欄位排序 查詢表中的所有資料
a.拷貝分頁外掛的jar包(pageHelper.jar jsqlparser.jar) 到lib
b.在主配置檔案中配置 分頁外掛的攔截器
c.使用分頁外掛的api 完成分頁查詢
select * from (
select tmp_page.*, rownum row_id from (
select * from xdl_bank_account_30 order by acc_money )
tmp_page where rownum <= ? ) where row_id > ?
當資料庫中的欄位 表 實體類中屬性不對應時如何解決?
1 使用欄位的別名
2 使用resultMap 讓資料庫欄位和實體類中的屬性對應
Spring 和 Mybatis 整合
1 SqlSessionFactoryBean
產生的是 SqlSessionFactory 型別的物件 最終能提供 SqlSession
這個型別 依賴於 dataSource 和 Sql 定義檔案
2 MapperFactoryBean
產生的是Mapper 的實現類
這個型別 依賴於 SqlSessionFactory 和 Mapper介面
整合步驟
5.1建立一個專案 匯入jar包(mybatis.jar mybatis-spring.jar
ojdbc14.jar ioc aop dao 資料庫連線池 ) 拷貝Spring配置檔案到src
5.2 編寫實體類
5.3 編寫SQL 定義檔案
根據id 查詢銀行賬戶
5.4 根據Mapper對映器規則 編寫DAO 介面
5.5 在Spring 配置檔案中 配置 SqlSessionFactoryBean
依賴於dataSource 和 SQL 定義
5.6 在Spring 配置檔案中 配置 MapperFactoryBean 就可以產生DAO 的實現類
批量產生Mapper實現類的元件
<bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.xdl.mapper"></property>
</bean>
通過自定義標註 控制介面產生實現類
第二種整合方案
SqlSessionTemplate
1建立一個專案 匯入jar包(mybatis.jar mybatis-spring.jar
ojdbc14.jar ioc aop dao 資料庫連線池 ) 拷貝Spring配置檔案到src
2 編寫實體類
3 編寫SQL 定義檔案
根據id 查詢銀行賬戶
4 根據Mapper對映器規則 編寫DAO 介面
5 在Spring 配置檔案中 配置 SqlSessionFactoryBean
依賴於dataSource 和 SQL 定義
6 編寫DAO 的實現類 實現DAO 介面 並注入 SqlSessionTemplate 型別的物件
這個物件依賴於 sqlSessionFactory。利用SqlSessionTemplate 對應的API 完成操作。
注意建立DAO 實現類元件 需要元件掃描