1. 程式人生 > >mybatis使用小結

mybatis使用小結

mybtis 直接進入資料庫執行sql語句,不需要在xxxDao.xml檔案中指定實體類對應的表,只需要在配置檔案中標明實體類中的各個屬性與表中欄位的對應關係即可。查詢結果會直接存入實體類物件當中。

在CRUD操作中,只有查詢操作需要在標籤中指定存放結果的結果集常用hashMap。select存放結果有兩種型別,resultMap和resultType ,通常二者搭配使用。因為resultMap雖然相對靈活,不要求資料與表字段嚴格對應,但由於要在配置檔案中指定與表字段的對應關係,因此維護相較於resultType麻煩。

如果對資料庫的操作不需要得到邏輯複雜的結果集合,只是簡單常用的增刪改查,則直接使用MyBatis-Plus提供的功能即可,直接返回 Mapper物件中的insert(),delete()等自帶方法。

mybatis與hibernate在使用時最顯著的區別在於,hibernate將具體的SQL寫在xxxDao.java檔案中,而mybatis的xxxDao.java檔案的作用則是呼叫xxxDao.xml,把具體語句寫在xml檔案中
也就是hibernate只需要一個.xml檔案來統一配置註冊各個類的資料庫操作,方便管理。缺點在於xxxDao.java檔案繁多,而且由於SQL夾在java檔案中,維護時相對麻煩。

mybatis由於SQL語句和表對應關係都寫在xml中,因此對基本不需要對xxxDao.java進行修改,業務變化時只需更改xml檔案即可。也就是相較於hibernate的xxxDao.java用來實現具體資料庫操作,mybatis將這種結構再進一步細化剝離,由一個複雜的.java檔案變為純粹作為呼叫中介的簡易.java檔案和一個實現操作的.xml檔案

。也就是mybatis的呼叫流程多了一層。controller呼叫service,service呼叫serviceImpl,serviceImpl呼叫xxxDao,xxxDao最終指向xxxDao.xml執行SQL。從中也能瞭解到,這種模式的缺點在於xml檔案過多

換言之,hibernate有一個xml和多個xxxDao.java;mybatis則是多組的xml和xxxDao.java搭配。