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

Mybatis返回值(resultType&resultMap)的具體使用

 更新時間:2023年08月18日 15:44:22   作者:Myovlmx  
返回值屬性有兩種設置,一種是resultType,一種是resultMap,本文主要介紹了Mybatis返回值(resultType&resultMap)的具體使用,具有一定的參考價值,感興趣的可以了解一下

之前的文章里面有對resultType和resultMap的簡單介紹這一期出點詳細的

resultType:

1,返回值為簡單類型。

直接使用resultType=“類型”,如string,Integer等。

 String getEmpNameById(Integer id);
<!-- 
        指定 resultType 返回值類型時 String 類型的,
        string 在這里是一個別名,代表的是 java.lang.String 
        對于引用數(shù)據(jù)類型,都是將大寫字母轉(zhuǎn)小寫,比如 HashMap 對應的別名是 'hashmap'
        基本數(shù)據(jù)類型考慮到重復的問題,會在其前面加上 '_',比如 byte 對應的別名是 '_byte'
    -->
    <select id="getEmpNameById" resultType="string">
        select username from t_employee where id = #{id}
    </select>

2.返回值為List類型。

使用resultType=“list元素的類型”,一般是實體類如User,也可以是Map,對應返回值類型是List<User> , List<Map<String,Object>>,不管是哪種,最終結(jié)果會根據(jù)接口返回值類型自動將多個 resultType指定的類型的元素(User或以一條記錄為一個Map)組裝成List。

 List<User> getUser(String age);
<select id="getUser" resultType="User">
        select * from user
        where
        age = #{age}
    </select>
 List<Map<String,Object>> findUserList();
 <select id="findUserList"  parameterType="int" resultType="java.util.Map">
        SELECT * FROM user
    </select>

 用java.util.List也是可以的,java.util.Map也是可以的至于為什么我沒有沒有研究過

 3.返回值為Map類型。(使用map要注意查詢結(jié)果的條數(shù),多條會報錯)

1. 如果查詢的結(jié)果是一條,我們可以把查詢的數(shù)據(jù)以{表字段名, 對應的值}方式存入到Map中。

   Map<String, Object> getEmpAsMapById(Integer id);
  <!-- 
        注意這里的 resultType 返回值類型是 'map'
     -->
    <select id="getEmpAsMapById" resultType="map">
        select * from t_employee where id = #{id}
    </select>

2. 如果查詢的結(jié)果是多條數(shù)據(jù),我們也可以把查詢的數(shù)據(jù)以{表中某一字段名, JavaBean}方式來封裝成Map。

// 查詢所有員工的信息,把數(shù)據(jù)庫中的 'id' 字段作為 key,對應的 value 封裝成 Employee 對象
    // @MapKey 中的值表示用數(shù)據(jù)庫中的哪個字段名作 key
    @MapKey("id")
    Map<Integer, Employee> getAllEmpsAsMap();
 <!--
        注意 resultType 返回值類型,不再是 'map',而是 Map 的 value 對應的 JavaBean 類型
    -->
    <select id="getAllEmpsAsMap" resultType="employee">
        select * from t_employee
    </select>

 擴展. 上面返回結(jié)果的形式都是基于查詢 (select) 的,其實對于增刪改的操作也可以返回一定類型的數(shù)據(jù),比如Boolean,Integer等。

 resultMap:

 屬于自定義的映射,用于由于各種原因數(shù)據(jù)庫的字段名跟實體類的字段名不一致

1.Emp實體類的屬性:

    private Integer empId;
    private String empName;
    private Integer age;
    private String gender;

2.表字段名: 

emp_idemp_nameagegenderdept_id

  3.映射文件配置:

<!--  Emp getEmpById(@Param("emp_id") Integer emp_id);-->
    <select id="getEmpById" resultType="Emp">
        select * from t_emp where emp_id = #{emp_id}
    </select>

4.執(zhí)行結(jié)果發(fā)現(xiàn)empId=null,empName=null

原因:數(shù)據(jù)庫表字段名中的emp_id,emp_name與實體類的屬性名empId,empName不一致,由數(shù)據(jù)庫不能映射到實體類屬性對應的屬性名

 1. 方式一 字段名設置別名

select emp_id empid from emp where emp_id  =  #{emp_id}

 2. 方式二 下劃線映射為駝峰(在配置文件中配置)

<!--引入properties文件,此時就可以${屬性名}的方式訪問屬性值-->
    <properties resource="jdbc.properties"/>
<!--配置mybatis自動轉(zhuǎn)換為駝峰式命名-->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--開啟延遲加載-->
        <setting name="lazyLoadingEnabled" value="true" />
    </settings>

3. 方式三 自定義映射resultMap

resultMap: 設置自定義的映射關(guān)系
id: 唯一標識–>resultMap=" "
type: 處理映射關(guān)系的實體類的類型
標簽:
id: 處理主鍵和實體類中屬性的映射關(guān)系
result: 處理普通字段和實體類中屬性的映射關(guān)系
column: 設置映射關(guān)系中的字段名,必須是sql中的某字段
property: 設置映射關(guān)系中的屬性的屬性名,必須為實體類中的屬性名

 <resultMap id="empDeptMapResultMapOne" type="Emp">
        <id property="eid" column="eid"></id>
        <result property="empName" column="emp_name"></result>
        <result property="age" column="age"></result>
        <result property="sex" column="sex"></result>
        <result property="email" column="email"></result>
        <result column="did" property="dept.did"></result>
        <result column="dname" property="dept.dname"></result>
  </resultMap>
<select id="getEmpAndDept" resultMap="empDeptMapResultMapTwo">
        select emp.*,dept.* from emp left join dept on emp.did = dept.did where emp.eid = #{eid}
 </select>

 到此這篇關(guān)于Mybatis返回值(resultType&resultMap)的具體使用的文章就介紹到這了,更多相關(guān)Mybatis返回值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程用法的實例詳解

    Java多線程用法的實例詳解

    這篇文章主要介紹了Java多線程用法的實例詳解的相關(guān)資料,希望通過本文大家能夠理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2017-09-09
  • Java Springboot全局異常處理

    Java Springboot全局異常處理

    這篇文章主要給大家介紹了關(guān)于Springboot全局異常處理的資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用SpringBoot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2021-11-11
  • Java使用SFTP上傳文件到服務器的簡單使用

    Java使用SFTP上傳文件到服務器的簡單使用

    這篇文章主要介紹了Java使用SFTP上傳文件到服務器的簡單使用,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02
  • SpringBoot自動配置的原理詳解

    SpringBoot自動配置的原理詳解

    這篇文章主要介紹了SpringBoot自動配置的原理詳解,本節(jié)更詳細地介紹了如何使用 Spring Boot,它涵蓋了諸如構(gòu)建系統(tǒng)、自動配置以及如何運行應用程序等主題,我們還介紹了一些 Spring Boot 最佳實踐,需要的朋友可以參考下
    2023-09-09
  • 關(guān)于SpringCloud分布式系統(tǒng)中實現(xiàn)冪等性的幾種方式

    關(guān)于SpringCloud分布式系統(tǒng)中實現(xiàn)冪等性的幾種方式

    這篇文章主要介紹了關(guān)于SpringCloud分布式系統(tǒng)中實現(xiàn)冪等性的幾種方式,冪等函數(shù),或冪等方法,是指可以使用相同參數(shù)重復執(zhí)行,并能獲得相同結(jié)果的函數(shù),這些函數(shù)不會影響系統(tǒng)狀態(tài),也不用擔心重復執(zhí)行會對系統(tǒng)造成改變,需要的朋友可以參考下
    2023-10-10
  • Java 小游戲開發(fā)之俄羅斯方塊

    Java 小游戲開發(fā)之俄羅斯方塊

    這篇文章主要介紹了Java 小游戲開發(fā)之俄羅斯方塊的相關(guān)資料,這里實現(xiàn)俄羅斯方塊的實例和實現(xiàn)效果給大家看下,學習java基礎的朋友的好資料,需要的朋友可以參考下
    2017-07-07
  • Java 枚舉類和自定義枚舉類和enum聲明及實現(xiàn)接口的操作

    Java 枚舉類和自定義枚舉類和enum聲明及實現(xiàn)接口的操作

    這篇文章主要介紹了Java 枚舉類和自定義枚舉類和enum聲明及實現(xiàn)接口的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 如何使用SpringMVC的消息轉(zhuǎn)換器設置日期格式

    如何使用SpringMVC的消息轉(zhuǎn)換器設置日期格式

    這篇文章主要介紹了如何使用SpringMVC的消息轉(zhuǎn)換器設置日期格式問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • spring mvc中的@ModelAttribute注解示例介紹

    spring mvc中的@ModelAttribute注解示例介紹

    在Spring mvc中,注解@ModelAttribute是一個非常常用的注解,下面這篇文章主要給大家介紹了關(guān)于spring mvc中@ModelAttribute注解的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-09-09
  • 詳解Java 中的三種代理模式

    詳解Java 中的三種代理模式

    代理(Proxy)是一種設計模式,提供了對目標對象另外的訪問方式;這篇文章主要介紹了Java 中的三種代理模式,需要的朋友可以參考下
    2018-08-08

最新評論