<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【39期】Mybatis面試18問,你想知道的都在這里了!

          共 5616字,需瀏覽 12分鐘

           ·

          2020-09-17 04:50

          程序員的成長之路
          互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
          關(guān)注


          閱讀本文大概需要 8 分鐘。

          來自:my.oschina.net/zudajun/blog/747682

          1、#{}和${}的區(qū)別是什么?

          答:${}是Properties文件中的變量占位符,它可以用于標(biāo)簽屬性值和sql內(nèi)部,屬于靜態(tài)文本替換,比如${driver}會被靜態(tài)替換為com.mysql.jdbc.Driver。
          #{}是sql的參數(shù)占位符,Mybatis會將sql中的#{}替換為?號,在sql執(zhí)行前會使用PreparedStatement的參數(shù)設(shè)置方法,按序給sql的?號占位符設(shè)置參數(shù)值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式為使用反射從參數(shù)對象中獲取item對象的name屬性值,相當(dāng)于param.getItem().getName()。

          2、Xml映射文件中,除了常見的select|insert|updae|delete標(biāo)簽之外,還有哪些標(biāo)簽?

          答:還有很多其他的標(biāo)簽,,加上動態(tài)sql的9個標(biāo)簽,trim|where|set|foreach|if|choose|when|otherwise|bind等,其中為sql片段標(biāo)簽,通過標(biāo)簽引入sql片段,為不支持自增的主鍵生成策略標(biāo)簽。

          3、最佳實踐中,通常一個Xml映射文件,都會寫一個Dao接口與之對應(yīng),請問,這個Dao接口的工作原理是什么?Dao接口里的方法,參數(shù)不同時,方法能重載嗎?

          答:Dao接口,就是人們常說的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法內(nèi)的參數(shù),就是傳遞給sql的參數(shù)。


          Mapper接口是沒有實現(xiàn)類的,當(dāng)調(diào)用接口方法時,接口全限名+方法名拼接字符串作為key值,可唯一定位一個MappedStatement,舉例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到namespace為com.mybatis3.mappers.StudentDao下面id = findStudentById的MappedStatement。在Mybatis中,每一個標(biāo)簽均會被解析為MappedStatement對象,標(biāo)簽內(nèi)的sql會被解析為BoundSql對象。

          18、為什么說Mybatis是半自動ORM映射工具?它與全自動的區(qū)別在哪里?

          答:Hibernate屬于全自動ORM映射工具,使用Hibernate查詢關(guān)聯(lián)對象或者關(guān)聯(lián)集合對象時,可以根據(jù)對象關(guān)系模型直接獲取,所以它是全自動的。而Mybatis在查詢關(guān)聯(lián)對象或關(guān)聯(lián)集合對象時,需要手動編寫sql來完成,所以,稱之為半自動ORM映射工具。

          推薦閱讀:

          【38期】一份tcp、http面試指南,常考點都給你了

          【37期】請你詳細(xì)說說類加載流程,類加載機制及自定義類加載器

          【36期】說說 如何停止一個正在運行的線程?

          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復(fù)「2048」,即可免費獲取!!

          微信掃描二維碼,關(guān)注我的公眾號

          朕已閱?

          瀏覽 47
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  精品国产精品一区二区金廿莲 | 99免费热播视频 | 黄色无遮挡 | 狠狠狠狠狠狠狠狠狠 | 丁香花激情网 |