mybatis映射sql文件
① mybatis基本配置詳解
中間步驟自行設置
Mysql驅動版本根據自己安裝的MySQL選擇
我把AppTest改成了MybatisTest,不該也無妨;
其中Student類暫時只設置四個欄位:
mapper介面暫時為空
在resources目錄下新建File命名為db.peoperties,配置如下內容:
提示:以上配置適用於MySQL8.X版本,5.X版本按照如下配置:
1、transactionManager:事務管理器;
type 事務管理類型:
JDBC(JdbcTransactionFactory);
MANAGED(ManagedTransactionFactory)
自定義事務管理器:實現TransactionFactory介面.type指定為全類名
2、dataSource:數據源;
type :數據源類型;
UNPOOLED(UnpooledDataSourceFactory); POOLED(PooledDataSourceFactory);
JNDI(JndiDataSourceFactory)
自定義數據源:實現DataSourceFactory介面,type是全類名
<mapper>:注冊一個sql映射文件
1、注冊映射文件
resource:引用類路徑下的sql映射文件
mybatis/StudentMapperpper.xml
url:引用網路路徑或者磁碟路徑下的sql映射文件
file:///var/mappers/AuthorMapper.xml
2、注冊介面
class:引用(注冊)介面,
① 有sql映射文件,映射文件名必須和介面同名,並且放在與介面同一目錄下;
② 沒有sql映射文件,所有的sql都是利用註解寫在介面上;
推薦:
比較重要的,復雜的Dao介面我們來寫sql映射文件
不重要,簡單的Dao介面為了開發快速可以使用註解;
批量注冊
需要在資源路徑下(resources)建立和一樣的文件目錄來存放想xml映射文件,如:com.example.StudentMapperpper.xml
StudentMapper
在resources的mybatis目錄下新建文件夾mapper,新建xml文件StudentMapper.xml
namespace :名稱空間;指定為介面的全類名
id :唯一標識
resultType :返回值類型
#{id} :從傳遞過來的參數中取出id值
resources目錄(MajorMapper.xml暫時不用創建)如下:
② mybatis原理
MyBatis 的工作原理:讀取 MyBatis 配置文件、載入映射文件、構造會話工廠、創建會話對象、Executor 執行器、輸入參數映射、輸出結果映射。
mybatis原理具體介紹如下:
1、讀取 MyBatis 配置文件:
mybatis-config.xml 為 MyBatis 的全局配置文件,配置了 MyBatis 的運行環境等信息,例如資料庫連接信息。
2、載入映射文件:
映射文件即 SQL 映射文件,該文件中配置了操作資料庫的 SQL 語句,需要在 MyBatis 配置文件 mybatis-config.xml 中載入。mybatis-config.xml 文件可以載入多個映射文件,每個文件對應資料庫中的一張表。
3、構造會話工廠:
通過 MyBatis 的環境等配置信息謹舉構建會話工廠 SqlSessionFactory。
4、創建會話對象:
由會話工廠創建 SqlSession 對象,該對拿晌哪象中包含了執行 SQL 語句的所有方法。
5、Executor 執行器:
MyBatis 底層定義了一個 Executor 介面來操作資料庫,它將根據 SqlSession 傳遞消碼的參數動態地生成需要執行的 SQL 語句,同時負責查詢緩存的維護。
8、輸出結果映射:
輸出結果類型可以是 Map、 List 等集合類型,也可以是基本數據類型和 POJO 類型。輸出結果映射過程類似於 JDBC 對結果集的解析過程。
③ 當mybatis中的statementType="CALLABLE"時的SQL映射語句該怎麼寫
1.resultMap
SQL 映射XML 文件是所有sql語句放置的地方。需要定義一個workspace,一般定義為對應的介面類的路徑。寫好SQL語句映射文件後,需要在MyBAtis配置文件mappers標簽中引用,例如
<mappers>
<mapper resource="com/liming/manager/data/mappers/UserMapper.xml" />
<mapper resource="com/liming/manager/data/mappers/StudentMapper.xml" />
<mapper resource="com/liming/manager/data/mappers/ClassMapper.xml" />
<mapper resource="com/liming/manager/data/mappers/TeacherMapper.xml" />
</mappers>
當Java介面與XML文件在一個相對路徑下時,可以不在myBatis配置文件的mappers中聲明。
SQL 映射XML 文件一些初級的元素:
(1). cache – 配置給定模式的緩存
(2). cache-ref – 從別的模式中引用一個緩存
(3). resultMap – 這是最復雜而卻強大的一個元素了,它描述如何從結果集中載入對象
(4). sql – 一個可以被其他語句復用的SQL 塊
(5). insert – 映射INSERT 語句
(6). update – 映射UPDATE 語句
(7). delete – 映射DELEETE 語句
(8). select - 映射SELECT語句
④ mybatis sql映射文件和hibernate映射文件有什麼不同
1.1 Hibernate 簡介
Hibernate對資料庫結構提供了較為完整的封裝,Hibernate的O/R Mapping實現了POJO 和資料庫表之間的映射,以及SQL 的自動生成和執行。程序員往往只需定義好了POJO 到資料庫表的映射關系,即可通過Hibernate 提供的方法完成持久層操作。程序員甚至不需要對SQL 的熟練掌握, Hibernate/OJB 會根據制定的存儲邏輯,自動生成對應的SQL 並調用JDBC介面加以執行。
1.2 MyBatis簡介
iBATIS 的著力點,則在於POJO 與SQL之間的映射關系。然後通過映射配置文件,將SQL所需的參數,以及返回的結果欄位映射到指定POJO。相對Hibernate「O/R」而言,iBATIS 是一種「Sql Mapping」的ORM實現。
第二章開發對比
開發速度
Hibernate的真正掌握要比Mybatis來得難些。Mybatis框架相對簡單很容易上手,但也相對簡陋些。個人覺得要用好Mybatis還是首先要先理解好Hibernate。
開發社區
Hibernate 與Mybatis都是流行的持久層開發框架,但Hibernate開發社區相對多熱鬧些,支持的工具也多,更新也快,當前最高版本4.1.8。而Mybatis相對平靜,工具較少,當前最高版本3.2。
開發工作量
Hibernate和MyBatis都有相應的代碼生成工具。可以生成簡單基本的DAO層方法。
針對高級查詢,Mybatis需要手動編寫SQL語句,以及ResultMap。而Hibernate有良好的映射機制,開發者無需關心SQL的生成與結果映射,可以更專注於業務流程。