久久综合色一综合色88欧美|久久er热在这里只有精品66|国产福利一区二区不卡|日本精品动漫二区三区

    1. <address id="l3apk"><var id="l3apk"><source id="l3apk"></source></var></address>

      mybatis面試題及答案

      時(shí)間:2022-12-09 13:32:20 面試技巧 我要投稿
      • 相關(guān)推薦

      mybatis面試題及答案

        求職者如果想在求職MyBatis中力挫群雄,找到一份稱心如意的工作,就必須要做好求職前的準(zhǔn)備。下面陽(yáng)光網(wǎng)小編精心整理了一些mybatis面試題及答案的例文,希望可以幫到你!

      mybatis面試題及答案

        1.講下MyBatis和Hibernate的區(qū)別?

        MyBatis是JDBC的輕量級(jí)封裝,把Sql和java代碼獨(dú)立出來(lái),性能相對(duì)比較高,寫(xiě)SQL語(yǔ)句相對(duì)于比較靈活,并且容易調(diào)試,一般用在大型項(xiàng)目中.

        Hibernate是JDBC的重量級(jí)封裝,開(kāi)發(fā)速度比較快,但是性能比較低,調(diào)試不方便,一般適合對(duì)進(jìn)度要求的比較高的中小型項(xiàng)目

        2.什么是MyBatis的接口綁定,有什么好處

        接口映射就是在IBatis中任意定義接口,然后把接口里面的方法和SQL語(yǔ)句綁定,我們直接調(diào)用接口方法就可以,

        這樣比起原來(lái)了SqlSession提供的方法我們可以有更加靈活的選擇和設(shè)置.

        3.接口綁定有幾種實(shí)現(xiàn)方式,分別是怎么實(shí)現(xiàn)的?

        接口綁定有兩種實(shí)現(xiàn)方式,一種是通過(guò)注解綁定,就是在接口的方法上面加上@Select @Update等注解里面包含Sql語(yǔ)句來(lái)綁定,另外一種就是通過(guò)xml里面寫(xiě)SQL來(lái)綁定,在這種情況下,

        要指定xml映射文件里面的namespace必須為接口的全路徑名.

        4.什么情況下用注解綁定,什么情況下用xml綁定

        當(dāng)Sql語(yǔ)句比較簡(jiǎn)單時(shí)候,用注解綁定,當(dāng)SQL語(yǔ)句比較復(fù)雜時(shí)候,用xml綁定,一般用xml綁定的比較多

        5.MyBatis實(shí)現(xiàn)一對(duì)一有幾種方式?具體怎么操作的

        有聯(lián)合查詢和嵌套查詢,聯(lián)合查詢是幾個(gè)表聯(lián)合查詢,只查詢一次,通過(guò)在resultMap里面配置association節(jié)點(diǎn)配置一對(duì)一的類就可以完成;

        嵌套查詢是先查一個(gè)表,根據(jù)這個(gè)表里面的結(jié)果的外鍵id,去再另外一個(gè)表里面查詢數(shù)據(jù),也是通過(guò)association配置,但另外一個(gè)表的查詢通過(guò)select屬性配置

        mybatis面試題及答案(二)

        1.如果要查詢的表名和返回的實(shí)體Bean對(duì)象不一致,那你是怎么處理的?

        在MyBatis里面最主要最靈活的的一個(gè)映射對(duì)象的ResultMap,在它里面可以映射鍵值對(duì), 默認(rèn)里面有id節(jié)點(diǎn),result節(jié)點(diǎn),它可以映射表里面的列名和對(duì)象里面的字段名. 并且在一對(duì)一,一對(duì)多的情況下結(jié)果集也一定要用ResultMap

        2.MyBatis里面的動(dòng)態(tài)Sql是怎么設(shè)定的`?用什么語(yǔ)法?

        MyBatis里面的動(dòng)態(tài)Sql一般是通過(guò)if節(jié)點(diǎn)來(lái)實(shí)現(xiàn),通過(guò)OGNL語(yǔ)法來(lái)實(shí)現(xiàn),但是如果要寫(xiě)的完整,必須配合where,trim節(jié)點(diǎn),

        where節(jié)點(diǎn)是判斷包含節(jié)點(diǎn)有內(nèi)容就插入where,否則不插入,trim節(jié)點(diǎn)是用來(lái)判斷如果

        動(dòng)態(tài)語(yǔ)句是以and 或or開(kāi)始,那么會(huì)自動(dòng)把這個(gè)and或者or取掉

        3.MyBatis在核心處理類叫什么

        MyBatis里面的核心處理類叫做SqlSession

        4.IBatis和MyBatis在細(xì)節(jié)上的不同有哪些

        在sql里面變量命名有原來(lái)的#變量# 變成了#{變量} 原來(lái)的$變量$變成了${變量}, 原來(lái)在sql節(jié)點(diǎn)里面的class都換名字交type

        原來(lái)的queryForObject queryForList 變成了selectOne selectList

        原來(lái)的別名設(shè)置在映射文件里面放在了核心配置文件里

        5.講下MyBatis的緩存

        MyBatis的緩存分為一級(jí)緩存和二級(jí)緩存,一級(jí)緩存放在session里面,默認(rèn)就有,二級(jí)緩存放在它的命名空間里,

        默認(rèn)是打開(kāi)的,使用二級(jí)緩存屬性類需要實(shí)現(xiàn)Serializable序列化接口(可用來(lái)保存對(duì)象的狀態(tài)),可在它的映射文件中配置

        mybatis面試題及答案(三)

        一.MyBatis(IBatis)的好處是什么

        ibatis把sql語(yǔ)句從Java源程序中獨(dú)立出來(lái),放在單獨(dú)的XML文件中編寫(xiě),給程序的維護(hù)帶來(lái)了很大便利。

        ibatis封裝了底層JDBC API的調(diào)用細(xì)節(jié),并能自動(dòng)將結(jié)果集轉(zhuǎn)換成Java Bean對(duì)象,大大簡(jiǎn)化了Java數(shù)據(jù)庫(kù)編程的重復(fù)工作。

        因?yàn)镮batis需要程序員自己去編寫(xiě)sql語(yǔ)句,程序員可以結(jié)合數(shù)據(jù)庫(kù)自身的特點(diǎn)靈活控制sql語(yǔ)句,

        因此能夠?qū)崿F(xiàn)比hibernate等全自動(dòng)orm框架更高的查詢效率,能夠完成復(fù)雜查詢。 ###12.MyBatis里面怎么處理分頁(yè)

        用插件分頁(yè)

        二.MyBatis里面怎么樣獲得剛插入的主鍵

        把節(jié)點(diǎn)的useGeneratedKeys=true設(shè)置先生成主鍵,然后keyProperty="id",把生成的主鍵指向?qū)傩?

        三、如何獲取自動(dòng)生成的(主)鍵值?

         方法總是返回一個(gè)int值 - 這個(gè)值代表的是插入的.行數(shù)。而自動(dòng)生成的鍵值在

        方法執(zhí)行完后可以被設(shè)置到傳入的參數(shù)對(duì)象中。

        示例:

        01.< id="Name" useGeneratedKeys="true" keyProperty="id">

        02.  into names (name) values (#{name})

        03.</>

        01.Name name = new Name();

        02.name.setName("Fred");

        03.

        04.int rows = mapper.Name(name);

        05.// 完成后,id已經(jīng)被設(shè)置到對(duì)象中

        06.System.out.println("rows ed = " + rows);

        07.System.out.println("generated key value = " + name.getId());

        四、在mapper中如何傳遞多個(gè)參數(shù)?

        Java的反射機(jī)制并不能讓框架獲取到參數(shù)的名字(方法簽名中只有參數(shù)類型,可以說(shuō)是為了優(yōu)化,也可以說(shuō)設(shè)計(jì)就是如此,總之名字無(wú)意義), 所以MyBatis默認(rèn)的命名為: param1,param2……

        如果想給他們指定名稱,可以使用 @param注解:

        01.importorg.apache.ibatis.annotations.Param;

        02.public interface UserMapper {

        03. User selectUser(@Param("username") String username,

        04. @Param("hashedPassword") String hashedPassword);

        05.}

        然后,就可以在xml像下面這樣使用(推薦封裝為一個(gè)Map,作為單個(gè)參數(shù)傳遞給Mapper): 01.

        02. select id, username, hashedPassword

        03. from some_table

        04. where username = #{username}

        05. andhashedPassword = #{hashedPassword}

        06.

      【mybatis面試題及答案】相關(guān)文章:

      經(jīng)典面試題及答案04-04

      面試題及答案04-04

      hibernate面試題及答案04-01

      jquery面試題及答案04-01

      oracle面試題及答案04-01

      spring面試題及答案04-01

      測(cè)試面試題及答案04-08

      .net面試題及答案04-08

      護(hù)士面試題及答案04-09