mybatis传参
在mybatis的學(xué)習(xí)中,會(huì)發(fā)現(xiàn)經(jīng)常需要傳參,這里以上一節(jié)寫(xiě)的實(shí)體類(lèi)為基礎(chǔ),當(dāng)我們要添加一個(gè)員工時(shí),需要添加員工的基本信息,以及所屬部門(mén),按照以前的方法,在實(shí)體類(lèi)中,添加部門(mén)id屬性,然后通過(guò)有參構(gòu)造的方法傳遞對(duì)象,讀取對(duì)象的部門(mén)id就可以了,但是現(xiàn)在使用mybatis時(shí),因?yàn)槭且粚?duì)多的關(guān)系,因此實(shí)體類(lèi)中設(shè)置的屬性是Dept屬性的,沒(méi)有did,因此沒(méi)有辦法通過(guò)有參構(gòu)造的方法來(lái)傳遞參數(shù),這時(shí)就要想辦法將部門(mén)的id傳遞過(guò)去。因此需要給之前的實(shí)體類(lèi)的有參構(gòu)造進(jìn)行修改,
這樣就員工的對(duì)象就可以使用有參構(gòu)造來(lái)創(chuàng)建對(duì)象,那么添加員工的信息的dao層以及mapper文件如下:
?
這是就會(huì)出現(xiàn)問(wèn)題,分析原因:因?yàn)閐ao層在傳參時(shí),如果參數(shù)是實(shí)體的話(huà),就可以直接在mapper中設(shè)置參數(shù)類(lèi)型來(lái)解析,但是如果不是實(shí)體的話(huà),就沒(méi)辦法解析了,因此當(dāng)參數(shù)不是實(shí)體時(shí),需要 用注解。
具體如下:
當(dāng)使用@param注解傳參時(shí),insert標(biāo)簽可以不寫(xiě)參數(shù)類(lèi)型型屬性,因?yàn)閰?shù)有多個(gè)屬性,所以是通過(guò)注解來(lái)區(qū)分的,當(dāng)參數(shù)為對(duì)象時(shí),調(diào)用對(duì)象的屬性為 參數(shù).屬性,通過(guò).來(lái)調(diào)用,就像本例中的emp.ename
在這里要說(shuō)明,在mapper文件中使用#{}傳遞參數(shù),當(dāng)傳遞多個(gè)參數(shù)時(shí), dao層@param()內(nèi)的值就是在mapper文件中#{}變量的名字,通過(guò)@param()注解來(lái)傳遞參數(shù)。單個(gè)參數(shù)可以不需要設(shè)置注解,需要指定參數(shù)調(diào)用的名字就需要設(shè)置
在mybatis中傳參分為參數(shù)傳遞(需要加注解),實(shí)體傳參,map傳參。
轉(zhuǎn)載于:https://www.cnblogs.com/Zs-book1/p/10989785.html
總結(jié)
- 上一篇: 美团信用卡会打电话吗?这样做就什么也不怕
- 下一篇: android 文件读写