MyBatis面試題
1、MyBatis優(yōu)缺點;
????優(yōu)點:
????????1、與JDBC相比,減少了50%以上的代碼量。
????????2、MyBatis是最簡單的持久化框架,小巧并且簡單易學(xué)。
????????3、MyBatis靈活,不會對應(yīng)用程序或者數(shù)據(jù)庫的現(xiàn)有設(shè)計強加任何影響,SQL寫在XML里,從程序代碼中徹底分離,降低耦合度,便于統(tǒng)一管理和優(yōu)化,可重用。
????????4、提供XML標(biāo)簽,支持編寫動態(tài)SQL語句(XML中使用if, else)。
????????5、提供映射標(biāo)簽,支持對象與數(shù)據(jù)庫的ORM字段關(guān)系映射(在XML中配置映射關(guān)系,也可以使用注解)。
????缺點:
????????1、SQL語句的編寫工作量較大,尤其是字段多、關(guān)聯(lián)表多時,更是如此,對開發(fā)人員編寫SQL語句的功底有一定要求。
????????2、SQL語句依賴于數(shù)據(jù)庫,導(dǎo)致數(shù)據(jù)庫移植性差,不能隨意更換數(shù)據(jù)庫。
2、簡述一下MyBatis執(zhí)行一個SQL的過程(編程步驟);
????1、創(chuàng)建SqlSessionFactory 會話工廠
????2、通過SqlSessionFactory 創(chuàng)建SqlSession
????3、通過sqlsession執(zhí)行數(shù)據(jù)庫操作
????4、調(diào)用session.commit()提交事務(wù)
????5、調(diào)用session.close()關(guān)閉會話
可能會問你JDBC的流程:
????????1、注冊驅(qū)動 (僅僅做一次)
2、建立連接(Connection)
3、創(chuàng)建運行SQL的語句(Statement)
4、運行語句
5、處理運行結(jié)果(ResultSet)
6、釋放資源
3、MyBatis與Hibernate有哪些不同;
????1、Mybatis是半自動ORM框架,sql需要自己寫在xml里面,靈活性高。
????2、Hibernate是全自動ORM框架,不需要自己寫sql語句,代碼簡便,數(shù)據(jù)庫可移植性高(換數(shù)據(jù)庫影響?。?。
4、#{} 和${}的區(qū)別是什么;
${}
是字符串替換,#{}
是預(yù)編譯處理可以防止SQL注入;一般傳參盡量使用#{} ;
5、MyBatis中如何批量更新或插入數(shù)據(jù);
? 一般工作中是在XML里面mybatis的<foreach>標(biāo)簽循環(huán)遍歷
6、說一下MyBatis的緩存;
????1、一級緩存: 基于 PerpetualCache 的 HashMap 本地緩存,其存儲作用域為 Session,當(dāng) Session flush 或 close 之后,該 Session 中的所有 Cache 就將清空,默認打開一級緩存。
????2、二級緩存與一級緩存其機制相同,默認也是采用 PerpetualCache,HashMap 存儲,不同在于其存儲作用域為 Mapper(Namespace),并且可自定義存儲源,如 Ehcache。默認不打開二級緩存,要開啟二級緩存,使用二級緩存屬性類需要實現(xiàn)Serializable序列化接口(可用來保存對象的狀態(tài)),可在它的映射文件中配置 ;
以上內(nèi)容僅供參考,請可以合理利用搜索引擎!