最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

mapper.xml中resultType映射類型問題

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

在使用 mapper.xml 進行編寫時 resultMap=“String” String竟然引用不進去,在程序中標(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ù)編寫項目時,試了下把 java.lang. 這個路徑刪了他也好使了,但是在同一個mapper中別的SQL想使用String或者Long類型的還需要引入絕對路徑

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

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

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

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

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

代碼如下:

/**
 * 代理工具方法,可以為任意接口生成任意實例代理,該方式使用在了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的實現(xiàn)。

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

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

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

mybatis代碼如下:

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

進而到MapperMethod中,如下:

然后是SqlCommand,如下:

繼續(xù)往下:

statementId就是我們的接口完全限定名加方法名。獲取對應(yīng)的MappedStatement后,進行下一步處理。這里我們肯定會想,這個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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring集成Seata方式(案例演示)

    Spring集成Seata方式(案例演示)

    這篇文章主要介紹了Spring集成Seata方式,本案例使用Seata-All演示,結(jié)合實例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • java多線程解決生產(chǎn)者消費者問題

    java多線程解決生產(chǎn)者消費者問題

    這篇文章主要介紹了java多線程解決生產(chǎn)者消費者問題的方法,實例分析了java采用多線程的方法解決生產(chǎn)者消費者問題的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • 使用java API實現(xiàn)zip遞歸壓縮和解壓文件夾

    使用java API實現(xiàn)zip遞歸壓縮和解壓文件夾

    這篇文章主要介紹了使用java API實現(xiàn)zip遞歸壓縮文件夾及解壓,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Java中調(diào)用DLL動態(tài)庫的操作方法

    Java中調(diào)用DLL動態(tài)庫的操作方法

    在Java編程中,有時我們需要調(diào)用本地代碼庫,特別是Windows平臺上的DLL(動態(tài)鏈接庫),本文中,我們將詳細(xì)討論如何在Java中加載和調(diào)用DLL動態(tài)庫,并通過具體示例來展示這個過程,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Spring Boot jar 啟動時設(shè)置環(huán)境參數(shù)的操作

    Spring Boot jar 啟動時設(shè)置環(huán)境參數(shù)的操作

    這篇文章主要介紹了Spring Boot jar 啟動時設(shè)置環(huán)境參數(shù)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • JAVA如何解決并發(fā)問題

    JAVA如何解決并發(fā)問題

    這篇文章主要介紹了JAVA如何解決并發(fā)問題的處理方法,文中講解的非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Spring?Boot?集成JWT實現(xiàn)前后端認(rèn)證的示例代碼

    Spring?Boot?集成JWT實現(xiàn)前后端認(rèn)證的示例代碼

    小程序、H5應(yīng)用的快速發(fā)展,使得前后端分離已經(jīng)成為了趨勢,本文主要介紹了Spring?Boot?集成JWT實現(xiàn)前后端認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • SpringBoot項目集成Swagger和swagger-bootstrap-ui及常用注解解讀

    SpringBoot項目集成Swagger和swagger-bootstrap-ui及常用注解解讀

    這篇文章主要介紹了SpringBoot項目集成Swagger和swagger-bootstrap-ui及常用注解解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java初學(xué)之繼承與多態(tài)

    Java初學(xué)之繼承與多態(tài)

    這篇文章主要介紹了Java 繼承與多態(tài)的深入理解的相關(guān)資料,子類繼承父類的特征和行為,使得子類具有父類的各種屬性和方法?;蜃宇悘母割惱^承方法,使得子類具有父類相同的行為,需要的朋友可以參考下
    2021-07-07
  • springboot設(shè)置多環(huán)境配置文件

    springboot設(shè)置多環(huán)境配置文件

    本文介紹了在Spring Boot項目中配置多個環(huán)境(如dev、test、prod)的方法,可以通過創(chuàng)建多個`.yml`文件來實現(xiàn),每個文件對應(yīng)一個環(huán)境,并在`application.yml`中指定激活的配置文件,感興趣的朋友跟隨小編一起看看吧
    2025-12-12

最新評論

阳新县| 波密县| 卢氏县| 宁国市| 岢岚县| 九寨沟县| 西畴县| 颍上县| 庄浪县| 浠水县| 山东省| 内黄县| 辽阳市| 新干县| 彭泽县| 黄冈市| 永靖县| 团风县| 广水市| 冀州市| 巴楚县| 大厂| 克拉玛依市| 庆元县| 肇东市| 隆尧县| 大竹县| 阳朔县| 涪陵区| 平潭县| 海原县| 台州市| 微山县| 安吉县| 宜章县| 科技| 宁安市| 丰原市| 阿巴嘎旗| 清涧县| 湟中县|