亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解決mapper.xml中resultType映射類型的問題

 更新時間:2023年06月26日 14:21:12   作者:內(nèi)涵無處不在  
這篇文章主要介紹了解決mapper.xml中resultType映射類型的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

mapper.xml中resultType映射類型問題

記錄一下在公司開發(fā)中遇到的問題

在使用 mapper.xml 進(jìn)行編寫時 resultMap=“String” String竟然引用不進(jìn)去,在程序中標(biāo)紅,別的mapper中也映射過但是別的就好使,然后重新啟動的時候代碼執(zhí)行報錯

<select id="queryAreaBy" parameterType="String" resultType="String">
? ? ? ?select SUM(area) as area from tb_forward_area where
? ? ? ? ? ? ? ? ? ? server_time = #{serverTime} ?and
? ? ? ? ? ? ? ? ? ? region_code like concat('%',#{regionCode},'%')
? ? ? ? ? ? ? ? ? ? and del_flag='0'
? ? </select>

這時需要 在resultType 中引入絕對路徑

<select id="queryAreaBy" parameterType="String" resultType="java.lang.String" >
? ? ? ? select SUM(area) as area from tb_forward_area where
? ? ? ? ? ? ? ? ? ? server_time = #{serverTime} ?and
? ? ? ? ? ? ? ? ? ? region_code like concat('%',#{regionCode},'%')
? ? ? ? ? ? ? ? ? ? and del_flag='0'
? ? </select>

代碼也不報錯了也可以正常使用了,第二天繼續(xù)編寫項(xiàng)目時,試了下把 java.lang. 這個路徑刪了他也好使了,但是在同一個mapper中別的SQL想使用String或者Long類型的還需要引入絕對路徑

mybatis Mapper接口映射Mapper.xml代碼分析

我們在使用mybatis時,會用到Mapper接口映射Mapper.xml,具體怎么映射的我們不知道。只知道要這么用,下面我們開始分析mybatis代碼。

在分析具體代碼時,我們有必要先看一下jdk動態(tài)代理。

簡單點(diǎn)說:jdk動態(tài)代理,可以讓我們在不實(shí)現(xiàn)接口的情況下,去動態(tài)生成接口的實(shí)現(xiàn)。

傳統(tǒng)上我們要去實(shí)現(xiàn)接口,都會創(chuàng)建具體的實(shí)現(xiàn)類.java,  而jdk動態(tài)代理,可以讓我們不用創(chuàng)建具體的實(shí)現(xiàn)類.java,就可以生成接口實(shí)現(xiàn)。

代碼如下:

/**
 * 代理工具方法,可以為任意接口生成任意實(shí)例代理,該方式使用在了mybatis的Mapper接口映射Mapper.xml中,具體在     MapperProxyFactory
 * @param tClass
 * @param invocationHandler
 * @param <T>
 * @return
 */
public <T> T test4(Class<T> tClass, InvocationHandler invocationHandler) {
   T t = (T) Proxy.newProxyInstance(tClass.getClassLoader(), new Class[] {tClass},invocationHandler);
   return t;
}
@Test
public void test6() {
   UserMapper userMapper = test4(UserMapper.class, new InvocationHandler() {
      @Override
      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
         System.out.println("查詢所有");
         return null;
      }
   });
   userMapper.getAll();
}

UserMapper為接口,上面的代碼就直接生成了UserMapper的實(shí)現(xiàn)。

執(zhí)行結(jié)果:

可以看到我們已經(jīng)成功生成了UserMapper的實(shí)現(xiàn),方法也正常執(zhí)行了。

mybatis正是使用了該特性進(jìn)行Mapper接口與Mapper.xml進(jìn)行映射。

mybatis代碼如下:

具體方法映射在mapperProxy的invoke方法中完成。 如下

進(jìn)而到MapperMethod中,如下:

然后是SqlCommand,如下:

繼續(xù)往下:

statementId就是我們的接口完全限定名加方法名。獲取對應(yīng)的MappedStatement后,進(jìn)行下一步處理。這里我們肯定會想,這個MappedStatement是怎么生成的,生成就是在解析Mapper.xml時生成的,代碼如下:

上面的id就是namespace+ select,update,delete,insert的id。

從這里也可以看到我們Mapper.xml的namespace必須的是Mapper接口的完全限定名,select,update,delete,insert的id也必須是接口的方法名。否則使用接口去映射時就會報錯。

xml解析完畢后,就調(diào)用如下方法,生成接口的代理類,并將接口中方法上的mybatis注解,生成MappedStatement,代碼如下

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java后端實(shí)現(xiàn)MD5加密的方法

    Java后端實(shí)現(xiàn)MD5加密的方法

    有的時候因?yàn)闃I(yè)務(wù)的需要,我們要制作關(guān)于密碼的修改功能。而關(guān)于密碼的加密一般都是用MD5,那么這篇文章將介紹如何在Java的后端實(shí)現(xiàn)MD5加密,有需要的可以參考借鑒。
    2016-08-08
  • Spring?AOP?后置通知修改響應(yīng)httpstatus方式

    Spring?AOP?后置通知修改響應(yīng)httpstatus方式

    這篇文章主要介紹了Spring?AOP?后置通知修改響應(yīng)httpstatus方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • MyBatis批量插入幾千條數(shù)據(jù)為何慎用foreach

    MyBatis批量插入幾千條數(shù)據(jù)為何慎用foreach

    這篇文章主要介紹了MyBatis批量插入幾千條數(shù)據(jù)為何慎用foreach問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 詳解如何在項(xiàng)目中應(yīng)用SpringSecurity權(quán)限控制

    詳解如何在項(xiàng)目中應(yīng)用SpringSecurity權(quán)限控制

    本文主要介紹了如何在項(xiàng)目中應(yīng)用SpringSecurity權(quán)限控制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Kafka使用Java客戶端進(jìn)行訪問的示例代碼

    Kafka使用Java客戶端進(jìn)行訪問的示例代碼

    本篇文章主要介紹了Kafka使用Java客戶端進(jìn)行訪問的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 深入了解Java核心類庫--Arrays類

    深入了解Java核心類庫--Arrays類

    這篇文章主要為大家詳細(xì)介紹了java Arrays類定義與使用的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • java求100以內(nèi)的素數(shù)示例分享

    java求100以內(nèi)的素數(shù)示例分享

    素數(shù)是指因數(shù)只有1和本身的數(shù)字,這篇文章主要介紹了java求100以內(nèi)的素數(shù)示例,需要的朋友可以參考下
    2014-03-03
  • Cookie的工作原理和應(yīng)用詳解

    Cookie的工作原理和應(yīng)用詳解

    Cookies是 web站點(diǎn)放置到你的硬盤上的程序。它們駐留在你的計算機(jī)上收集關(guān)于你在因特網(wǎng)上所做的一切事情的信息,并且 web站點(diǎn)可以在任何時候讀取到Cookies收集到的所有信息
    2021-06-06
  • 詳解配置類為什么要添加@Configuration注解

    詳解配置類為什么要添加@Configuration注解

    這篇文章主要介紹了詳解配置類為什么要添加@Configuration注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Java實(shí)現(xiàn)鏈表數(shù)據(jù)結(jié)構(gòu)的方法

    Java實(shí)現(xiàn)鏈表數(shù)據(jù)結(jié)構(gòu)的方法

    這篇文章主要介紹了Java實(shí)現(xiàn)鏈表數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,每一個鏈表都包含多個節(jié)點(diǎn),節(jié)點(diǎn)又包含兩個部分,一個是數(shù)據(jù)域(儲存節(jié)點(diǎn)含有的信息),一個是引用域(儲存下一個節(jié)點(diǎn)或者上一個節(jié)點(diǎn)的地址),需要的朋友可以參考下
    2022-01-01

最新評論