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

封裝mybatis的輸出結(jié)果方式

 更新時(shí)間:2025年12月25日 08:36:32   作者:yuluo_YX  
MyBatis通過(guò)resultType將SQL查詢結(jié)果封裝為Java對(duì)象,resultType可以是Java類型全限定名或別名,別名需要在MyBatis主配置文件中定義,resultMap用于處理數(shù)據(jù)庫(kù)列名與Java屬性名不一致的情況,在Mapper文件中,使用resultType或resultMap

封裝mybatis的輸出結(jié)果

  • 封裝輸出結(jié)果:MyBatis執(zhí)行sql語(yǔ)句,得到ResultSet,轉(zhuǎn)為java對(duì)象。

resultType

resultType屬性:在執(zhí)行select時(shí)使用,作為標(biāo)簽的屬性值出現(xiàn)的

resultType:表示類型,mysql執(zhí)行sql語(yǔ)句,得到j(luò)ava對(duì)象的類型,它的值有兩種

  • java類型的全限定名稱( 根據(jù)Dao接口中的方法返回值類型確定)
  • 使用別名

resultType表示java自定義對(duì)象

全限定名稱
Student selectById(Integer id);

<select id="selectById" parameterType="int" resultType="indi.yuluo.domain.Student">
    select id,name,email,age from student where id=#{studentId}
</select>

resultType: 使用java對(duì)象的全限定名稱。表示的意思是mybatis執(zhí)行sql語(yǔ)句之后,把ResultSet中的數(shù)據(jù)轉(zhuǎn)為Student類型的對(duì)象。mybatis會(huì)做以下的操作:
    1,調(diào)用indi.yuluo.domain.Student的無(wú)參構(gòu)造方法,創(chuàng)建對(duì)象:
    Student student = new Student();
	2, 同名的列賦值給同名的屬性
    student.setId(rs.getInt("id"));
	student.setString(rs.get("name"));
	3,得到j(luò)ava對(duì)象,如果dao接口返回值是List集合,mybatis把student對(duì)象放入到List集合中
        
所以執(zhí)行 Student studen = dao.selectById(1001);得到的是數(shù)據(jù)庫(kù)中id=1001的這行數(shù)據(jù),這行數(shù)據(jù)的列值,賦給了student對(duì)象的屬性,得到studen對(duì)象,就相當(dāng)于得到了id=1001這行數(shù)據(jù)
        
所以在聲明實(shí)體類的時(shí)候,屬性名和列名盡量保持一致!
使用別名

自定義別名

  • mybatis提供的對(duì)java類型定義簡(jiǎn)短,好記的名稱
  • 自定義別名的步驟

在mybatis主配置文件中,使用typeAliases標(biāo)簽聲明別名

在mapper文件中,resultType = ”別名“

    <!--類型別名-->
    <typeAliases>
        
        <!--第一種語(yǔ)法格式
            type:java類型的全限定名稱(自定義類型)
            alias:自定義別名
        -->
        <typeAlias type="indi.yuluo.domain.Student" alias="stu"/>
        <typeAlias type="indi.yuluo.******" alias="****"/>
        
    </typeAliases>
  • 優(yōu)點(diǎn):別名可以自定義
  • 缺點(diǎn):每個(gè)類型都需要自己定義

使用來(lái)定義別名

    <!--類型別名-->
        
        <!--別名就是每個(gè)類的類名的小寫-->
        <package name="indi.yuluo.domain.Student"/>
        <package name="indi.yuluo.****">
        
    </typeAliases>

建議使用全限定名稱

resultType表示簡(jiǎn)單類型

mapper文件

    <!--執(zhí)行sql語(yǔ)句,得到的是一個(gè)一行一列的值-->
    <select id="countStudent" resultType="java.lang.Integer">
        select count(*) from student
    </select>

dan方法

    /**
     * 得到student這張表的記錄數(shù)
     * @return
     */
    Integer countStudent();

resultType表示map數(shù)據(jù)結(jié)構(gòu)

mapper文件

    <!--執(zhí)行sql得到一個(gè)map數(shù)據(jù)結(jié)構(gòu)
        {列名 = 列值,……}
    -->
    <select id="selectByMap" parameterType="int" resultType="java.util.HashMap">
        select * from student where id=#{studentId}
    </select>

dao方法

    // 返回結(jié)果是一個(gè)Map
    Map<Object, Object> selectByMap(@Param("studentId") Integer id);

單元測(cè)試

    /**
     * 用于測(cè)試:resultMap 返回的是一個(gè)map的數(shù)據(jù)結(jié)構(gòu)
     */
    @Test
    public void testSelectByMap() {
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        StudentDao mapper = sqlSession.getMapper(StudentDao.class);

        Map<Object, Object> objectObjectMap = mapper.selectByMap(1002);

        System.out.println(objectObjectMap);
        sqlSession.close();
    }
  • 只能返回一條數(shù)據(jù)多了會(huì)報(bào)異常

resultMap

因?yàn)閿?shù)據(jù)庫(kù)的列名定義規(guī)范和java的屬性值的命名規(guī)范不同,所以會(huì)經(jīng)常使用到resultMap這個(gè)屬性

<!--
	定義resultMap
    id:給resultMap的映射關(guān)系七個(gè)名稱,唯一值
    type:java類型的全限定名稱
-->
<resultMap id="customMap" type="indi.yuluo.vo.CustomerOnject">
    <!--定義列名和屬性名的對(duì)應(yīng)-->
    <!--主鍵類型使用id標(biāo)簽-->
    <id column="id" property="cid"/>
    
    <!--非主鍵類型使用result標(biāo)簽-->
    <result column="name" property="cname"/>
    
    <!--列名和屬性名相同不定義-->
    <result column="emial" property="email"/>
    
</result>
    
<!--使用resultMap屬性的id值來(lái)指定映射關(guān)系-->    
<select id="selectByMap" resultMap="customMap">
    select * from student where id=#{studentId}
</select>
  • 定義了之后可以反復(fù)使用

resultType和ruseltMap二選一,不能同時(shí)使用

總結(jié)

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

相關(guān)文章

  • Springboot如何實(shí)現(xiàn)對(duì)配置文件中的明文密碼加密

    Springboot如何實(shí)現(xiàn)對(duì)配置文件中的明文密碼加密

    這篇文章主要介紹了Springboot如何實(shí)現(xiàn)對(duì)配置文件中的明文密碼加密問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java?斷言?assert的用法詳解

    Java?斷言?assert的用法詳解

    Java?assert斷言機(jī)制是Java5中推出的新特性,它主要用于在程序運(yùn)行時(shí)檢查狀態(tài)或假設(shè)的正確性,本篇文章將全面詳細(xì)地講解Java?assert斷言機(jī)制,包括斷言概述、語(yǔ)法規(guī)則、工作原理、使用場(chǎng)景、注意事項(xiàng)以及示例代碼等方面,需要的朋友可以參考下
    2023-05-05
  • Java 面試題和答案 - (下)

    Java 面試題和答案 - (下)

    本文主要介紹Java 面試題,這里整理了Java面試題關(guān)于JDBC,線程異常處理,Servlet,JSP的知識(shí)的整理,幫助大家理解知識(shí)點(diǎn),便于面試,有興趣的小伙伴可以參考下
    2016-09-09
  • 解析Spring中@Controller@Service等線程安全問(wèn)題

    解析Spring中@Controller@Service等線程安全問(wèn)題

    這篇文章主要為大家介紹解析了Spring中@Controller@Service等線程的安全問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java項(xiàng)目打包Docker鏡像全流程

    Java項(xiàng)目打包Docker鏡像全流程

    本文是一份超詳細(xì)的Java項(xiàng)目Docker化實(shí)戰(zhàn)手冊(cè),從環(huán)境準(zhǔn)備到最終上線,手把手帶你完成整個(gè)容器化部署流程,無(wú)論你是剛接觸Docker的新手,還是想系統(tǒng)梳理容器化流程的開發(fā)者,這篇文章都能給你帶來(lái)實(shí)實(shí)在在的幫助,需要的朋友可以參考下
    2025-04-04
  • jfreechart畫折線圖的方法

    jfreechart畫折線圖的方法

    這篇文章主要為大家詳細(xì)介紹了jfreechart畫折線圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Mybatis批量修改時(shí)出現(xiàn)報(bào)錯(cuò)問(wèn)題解決方案

    Mybatis批量修改時(shí)出現(xiàn)報(bào)錯(cuò)問(wèn)題解決方案

    這篇文章主要介紹了Mybatis批量修改時(shí)出現(xiàn)報(bào)錯(cuò)問(wèn)題解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Java 求解如何把二叉搜索樹轉(zhuǎn)換為累加樹

    Java 求解如何把二叉搜索樹轉(zhuǎn)換為累加樹

    這篇文章主要介紹了Java 求解把二叉搜索樹轉(zhuǎn)換為累加樹的代碼,總之需要觀察示例節(jié)點(diǎn)的規(guī)律,需要記錄上個(gè)節(jié)點(diǎn)的情況,注意引入前驅(qū)節(jié)點(diǎn)pre,具體實(shí)例代碼跟隨小編一起看看吧
    2021-11-11
  • springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)

    springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)

    這篇文章主要為大家詳細(xì)介紹了springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能,比較基礎(chǔ)的學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Java序列化(Serialization) 機(jī)制

    Java序列化(Serialization) 機(jī)制

    本篇文章是對(duì)Java中對(duì)象的序列化(Serialization) 機(jī)制進(jìn)行了詳細(xì)的分析介紹,并附實(shí)例,需要的朋友可以參考下
    2016-07-07

最新評(píng)論

张家口市| 通山县| 九龙城区| 文水县| 阿拉善右旗| 自贡市| 榕江县| 西乌| 清涧县| 泰和县| 香港 | 平顺县| 明光市| 开鲁县| 江津市| 北川| 泰来县| 沙河市| 都昌县| 通渭县| 三原县| 泾阳县| 大丰市| 页游| 西盟| 苍山县| 吉安县| 鹤山市| 河津市| 延庆县| 健康| 许昌县| 兴安县| 蒲江县| 来宾市| 田林县| 巴东县| 墨江| 固阳县| 苗栗市| 灌阳县|