(3)配置 mapper 掃描器:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="https://www.520longzhigu.com/diannao/mapper 接口包地址"></property><property name="sqlSessionFactoryBeanName"value="https://www.520longzhigu.com/diannao/sqlSessionFactory"/></bean>(4)使用掃描器后從 spring 容器中獲取 mapper 的實(shí)現(xiàn)對(duì)象 。
什么是MyBatis的接口綁定?有哪些實(shí)現(xiàn)方式? 接口綁定,就是在MyBatis中任意定義接口,然后把接口里面的方法和SQL語句綁定,我們直接調(diào)用接口方法就可以,這樣比起原來了SqlSession提供的方法我們可以有更加靈活的選擇和設(shè)置 。
接口綁定有兩種實(shí)現(xiàn)方式
通過注解綁定,就是在接口的方法上面加上 @Select、@Update等注解,里面包含Sql語句來綁定;
通過xml里面寫SQL來綁定, 在這種情況下,要指定xml映射文件里面的namespace必須為接口的全路徑名 。當(dāng)Sql語句比較簡單時(shí)候,用注解綁定, 當(dāng)SQL語句比較復(fù)雜時(shí)候,用xml綁定,一般用xml綁定的比較多 。
使用MyBatis的mapper接口調(diào)用時(shí)有哪些要求?1、Mapper接口方法名和mapper.xml中定義的每個(gè)sql的id相同 。
2、Mapper接口方法的輸入?yún)?shù)類型和mapper.xml中定義的每個(gè)sql 的parameterType的類型相同 。
3、Mapper接口方法的輸出參數(shù)類型和mapper.xml中定義的每個(gè)sql的resultType的類型相同 。
4、Mapper.xml文件中的namespace即是mapper接口的類路徑 。
最佳實(shí)踐中,通常一個(gè)Xml映射文件,都會(huì)寫一個(gè)Dao接口與之對(duì)應(yīng),請(qǐng)問,這個(gè)Dao接口的工作原理是什么?Dao接口里的方法,參數(shù)不同時(shí),方法能重載嗎 Dao接口,就是人們常說的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法內(nèi)的參數(shù),就是傳遞給sql的參數(shù) 。Mapper接口是沒有實(shí)現(xiàn)類的,當(dāng)調(diào)用接口方法時(shí),接口全限名+方法名拼接字符串作為key值,可唯一定位一個(gè)MappedStatement,舉例:com.mybatis3.mappers.StudentDao.findStudentById,可以唯一找到namespace為com.mybatis3.mappers.StudentDao下面id = findStudentById的MappedStatement 。在Mybatis中,每一個(gè)<select>、<insert>、<update>、<delete>標(biāo)簽,都會(huì)被解析為一個(gè)MappedStatement對(duì)象 。
Dao接口里的方法,是不能重載的,因?yàn)槭侨廾?方法名的保存和尋找策略 。
Dao接口的工作原理是JDK動(dòng)態(tài)代理,Mybatis運(yùn)行時(shí)會(huì)使用JDK動(dòng)態(tài)代理為Dao接口生成代理proxy對(duì)象,代理對(duì)象proxy會(huì)攔截接口方法,轉(zhuǎn)而執(zhí)行MappedStatement所代表的sql,然后將sql執(zhí)行結(jié)果返回 。
Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重復(fù)? 不同的Xml映射文件,如果配置了namespace,那么id可以重復(fù);如果沒有配置namespace,那么id不能重復(fù);畢竟namespace不是必須的,只是最佳實(shí)踐而已 。
原因就是namespace+id是作為Map<String, MappedStatement>的key使用的,如果沒有namespace,就剩下id,那么,id重復(fù)會(huì)導(dǎo)致數(shù)據(jù)互相覆蓋 。有了namespace,自然id就可以重復(fù),namespace不同,namespace+id自然也就不同 。
簡述Mybatis的Xml映射文件和Mybatis內(nèi)部數(shù)據(jù)結(jié)構(gòu)之間的映射關(guān)系? 答:Mybatis將所有Xml配置信息都封裝到All-In-One重量級(jí)對(duì)象Configuration內(nèi)部 。在Xml映射文件中,<parameterMap>標(biāo)簽會(huì)被解析為ParameterMap對(duì)象,其每個(gè)子元素會(huì)被解析為ParameterMapping對(duì)象 。<resultMap>標(biāo)簽會(huì)被解析為ResultMap對(duì)象,其每個(gè)子元素會(huì)被解析為ResultMapping對(duì)象 。每一個(gè)<select>、<insert>、<update>、<delete>標(biāo)簽均會(huì)被解析為MappedStatement對(duì)象,標(biāo)簽內(nèi)的sql會(huì)被解析為BoundSql對(duì)象 。
Mybatis是如何將sql執(zhí)行結(jié)果封裝為目標(biāo)對(duì)象并返回的?都有哪些映射形式?第一種是使用<resultMap>標(biāo)簽,逐一定義列名和對(duì)象屬性名之間的映射關(guān)系 。
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請(qǐng)您及時(shí)就醫(yī)或請(qǐng)專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對(duì)您有所幫助:- 重陽節(jié)的來歷兒童故事
- 流鼻血和癌癥是否有關(guān)系 勿忽視身體發(fā)出的求救信號(hào)
- 手指發(fā)麻可能與身體大病有關(guān) 尤其是上半身疾病
- 有關(guān)土地方面,農(nóng)民務(wù)必清楚 一畝地等于多少平方米?
- 有關(guān)肩周炎的誤區(qū) 肩周炎的自我康復(fù)訓(xùn)練法
- 睡眠健身與“性愛”也有關(guān)系?
- 相親成功率與心理年齡有關(guān)?
- 高二下冊(cè)地理知識(shí)點(diǎn)總結(jié) 高二地理知識(shí)點(diǎn)總結(jié)
- 八年級(jí)上冊(cè)英語筆記整理 初二英語下冊(cè)知識(shí)點(diǎn)
- 有關(guān)環(huán)境的小視頻 環(huán)保宣傳視頻短片
