下面要給大家分享的是mybatis緩存面試題,那么一般mybatis面試題都有哪些內(nèi)容呢?有哪些面試題是經(jīng)常會(huì)問(wèn)到的?下面一起來(lái)看看吧。
面試題
1、mybatis是什么?
答案:mybatis是一個(gè)半ORM框架,內(nèi)部封裝了JDBC,開(kāi)發(fā)的時(shí)候,只要關(guān)注SQL語(yǔ)句/java/post/854.html本身,不要花費(fèi)多余的精力去處理加載驅(qū)動(dòng)、創(chuàng)建連接、創(chuàng)建statement等過(guò)程。
直接編寫原生態(tài)sql,能夠嚴(yán)格控制sql執(zhí)行性能,靈活度高。
關(guān)于mybatis是什么的內(nèi)容,大家可以通過(guò)以下的文章來(lái)進(jìn)行更加詳細(xì)的了解-mybatis原理都有哪些?mybatis是什么?
2、mybatis的優(yōu)點(diǎn)有哪些?MyBatis框架的缺點(diǎn)有哪些?
答案:優(yōu)點(diǎn):基于SQL語(yǔ)句編程,非常的靈活,不會(huì)對(duì)應(yīng)用程序或者是數(shù)據(jù)庫(kù)的現(xiàn)有設(shè)計(jì)造成影響,SQL寫在XML里面,解除sql和程序代碼的耦合,有助于統(tǒng)一管理;提供XML標(biāo)簽,支持編寫動(dòng)態(tài)SQL語(yǔ)句,并可重用;和JDBC比較起來(lái),減少了50%以上的代碼量,消除了JDBC大量冗余的代碼,不需要去手動(dòng)開(kāi)關(guān)連接;可以很好的和各種數(shù)據(jù)庫(kù)兼容;可以很好的和Spring集成;提供映射標(biāo)簽,支持對(duì)象和數(shù)據(jù)庫(kù)的ORM字段關(guān)系映射;提供對(duì)象關(guān)系映射標(biāo)簽,支持對(duì)象關(guān)系組件維護(hù)。
缺點(diǎn):編寫工作量大,SQL語(yǔ)句依賴于數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)移植性差,不可以隨意的去更換數(shù)據(jù)庫(kù)。
推薦閱讀:mybatis優(yōu)缺點(diǎn)是什么?有哪些優(yōu)點(diǎn)和缺點(diǎn)?
3、MyBatis和Hibernate的區(qū)別有哪些?
答案:不完全是一個(gè)ORM框架;Mybatis直接編寫原生態(tài)sql,能夠嚴(yán)格控制sql執(zhí)行性能,靈活度高,但是,假如要實(shí)現(xiàn)支持多種數(shù)據(jù)庫(kù)的軟件,那么就要自定義多套sql映射文件,工作量比較大;Hibernate對(duì)象和關(guān)系映射能力強(qiáng),數(shù)據(jù)庫(kù)無(wú)關(guān)性好,對(duì)于關(guān)系模型要求高的軟件,假如要用hibernate開(kāi)發(fā),能夠節(jié)省很多的代碼,提高效率。
4、#{}和${}的有什么區(qū)別?
答案:#{}是預(yù)編譯處理,${}是字符串替換;Mybatis在處理#{}的時(shí)候,會(huì)把sql當(dāng)中的#{}替換成為?號(hào),調(diào)用PreparedStatement的set方法來(lái)賦值;Mybatis在處理${}的時(shí)候,會(huì)將${}替換成變量的值;使用#{}能夠有效的防止SQL注入,提高系統(tǒng)安全性。
推薦閱讀:mybatis中$#的區(qū)別是什么?有什么區(qū)別?
5、怎樣批量插入?
創(chuàng)建一個(gè)insert語(yǔ)句
<insert id=”insertname”> 2 insert into names (name) values (#{value}) 3 </insert>
在java代碼中執(zhí)行批處理插入
list < string > names = new arraylist(); names.add(“fred”); names.add(“barney”); names.add(“betty”); names.add(“wilma”); // 注意這里 executortype.batch sqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch); try { namemapper mapper = sqlsession.getmapper(namemapper.class); for (string name: names) { mapper.insertname(name); } sqlsession.commit(); } catch (Exception e) { e.printStackTrace(); sqlSession.rollback(); throw e; } finally { sqlsession.close(); }
推薦閱讀:mybatis批量插入數(shù)據(jù)如何實(shí)現(xiàn)?實(shí)現(xiàn)方式有哪些?
6、mybatis動(dòng)態(tài)sql有什么用?執(zhí)行原理是什么?有哪些動(dòng)態(tài)sql?
答案:能夠在Xml映射文件當(dāng)中,用標(biāo)簽的形式編寫動(dòng)態(tài)sql,執(zhí)行原理是根據(jù)表達(dá)式的值 完成邏輯判斷并動(dòng)態(tài)拼接sql的功能;提供了九種動(dòng)態(tài)sql標(biāo)簽:trim | where | set | foreach | if | choose | when | otherwise | bind。
7、ybatis是半自動(dòng)ORM映射工具為什么要這樣說(shuō)?和全自動(dòng)的區(qū)別是什么?
答案:Hibernate屬于全自動(dòng)ORM映射工具,使用Hibernate查詢關(guān)聯(lián)對(duì)象或者是關(guān)聯(lián)集合對(duì)象的時(shí)候,能夠依據(jù)對(duì)象關(guān)系模型直接獲取,所以說(shuō),它是全自動(dòng)的;而Mybatis在查詢關(guān)聯(lián)對(duì)象或關(guān)聯(lián)集合對(duì)象的時(shí)候,則要手動(dòng)編寫sql來(lái)完成,所以,就叫做半自動(dòng)ORM映射工具。
mybatis面試題就暫時(shí)給大家分享到這里了,還想了解更多的面試題,可以繼續(xù)通過(guò)賦能網(wǎng)的面試題欄目來(lái)了解。
本文鏈接:
本文章“mybati緩存機(jī)制面試都問(wèn)些什么mybati緩存面試題及答案整理!”已幫助 69 人
免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579