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

MyBatis輸入映射和輸出映射的實(shí)現(xiàn)示例

 更新時(shí)間:2026年04月23日 15:17:11   作者:二哈喇子!  
本文詳細(xì)介紹了MyBatis框架中resultMap的使用,包括其在Java對(duì)象與數(shù)據(jù)庫(kù)表列映射中的作用,以及如何配置resultMap處理不同情況,具有一定的參考價(jià)值,感興趣的可以了解一下

前言

MyBatis的輸入映射和輸出映射是將Java對(duì)象和數(shù)據(jù)庫(kù)表的列進(jìn)行映射,實(shí)現(xiàn)數(shù)據(jù)的自動(dòng)轉(zhuǎn)換。

輸入映射(Parameter Mapping):是將Java對(duì)象轉(zhuǎn)換為可供SQL語(yǔ)句執(zhí)行的參數(shù)。MyBatis提供了多種方式進(jìn)行輸入映射,包括基本類(lèi)型、Map、注解、XML映射文件等。

輸出映射(Result Mapping):是將SQL查詢(xún)結(jié)果映射為Java對(duì)象。MyBatis提供了多種方式進(jìn)行輸出映射,包括基本類(lèi)型、Map、注解、XML映射文件等。其中XML映射文件是最常用的方式,可以根據(jù)列名或列索引將查詢(xún)結(jié)果映射為Java對(duì)象的屬性。

通過(guò)輸入映射和輸出映射,可以方便地完成Java對(duì)象與數(shù)據(jù)庫(kù)表的轉(zhuǎn)換,提高了開(kāi)發(fā)效率和代碼的可維護(hù)性。

resultMap的使用

使用resultMap的場(chǎng)景如下:

  • 數(shù)據(jù)庫(kù)表和Java類(lèi)字段名稱(chēng)不一致。如果數(shù)據(jù)庫(kù)表中的列名稱(chēng)和Java類(lèi)中的屬性名稱(chēng)不一致,可以使用resultMap來(lái)映射這兩者之間的關(guān)系,避免手動(dòng)轉(zhuǎn)換的繁瑣和容易出錯(cuò)。
  • 處理復(fù)雜查詢(xún)結(jié)果。如果查詢(xún)結(jié)果是多表聯(lián)合查詢(xún),或者需要按照特定的順序和格式顯示結(jié)果,可以使用resultMap來(lái)定制化查詢(xún)結(jié)果的映射。
  • 查詢(xún)結(jié)果中包含關(guān)聯(lián)對(duì)象。如果查詢(xún)結(jié)果中包含了與主對(duì)象關(guān)聯(lián)的其他對(duì)象,可以使用resultMap來(lái)映射出這些關(guān)聯(lián)對(duì)象,方便進(jìn)行對(duì)象的嵌套查詢(xún)和處理。
  • 可以提高程序性能。使用resultMap可以緩存映射規(guī)則,避免每次查詢(xún)都需要重新定義映射規(guī)則的操作,從而提高程序的性能。

總之,如果需要處理一些復(fù)雜的查詢(xún)結(jié)果或者需要將數(shù)據(jù)庫(kù)查詢(xún)結(jié)果映射到Java對(duì)象中,就可以使用resultMap。

MyBatis框架的工作執(zhí)行流程如下

(1)讀取MyBatis配置文件mybatis-config.xml

(2)加載映射文件Mapper.xml

(3)構(gòu)建會(huì)話工廠

(4)創(chuàng)建SqlSession對(duì)象

(5)使用Executor接口來(lái)操作數(shù)據(jù)庫(kù)

(6)使用MappedStatement類(lèi)型的參數(shù)對(duì)映射信息進(jìn)行封裝。

(7)輸入?yún)?shù)映射

(8)輸出結(jié)果映射

mapper元素子元素及其作用

在映射文件中,<mapper>元素是映射文件的根元素,其他元素都是它的子元素。這些子元素及其作用如下所示:

  • <select>:用于映射查詢(xún)語(yǔ)句,可自定義參數(shù),返回結(jié)果集等。
  • <insert>:用于映射插入語(yǔ)句,執(zhí)行后返回一個(gè)整數(shù),代表插入的條數(shù)。
  • <update>:用于映射更新語(yǔ)句,執(zhí)行后返回一個(gè)整數(shù),代表更新的條數(shù)。
  • <delete>:用于映射刪除語(yǔ)句,執(zhí)行后返回一個(gè)整數(shù),代表刪除的條數(shù)。
  • <sql>:用于定義一部分SQL,然后可被其他語(yǔ)句引用此SQL。
  • <cache>:用于給定命名空間的緩存配置。
  • <cache-ref>:用于其他命名空間緩存配置的引用。
  • <resultMap>:用于描述如何從數(shù)據(jù)庫(kù)結(jié)果集中來(lái)加載對(duì)象。

案例

po 類(lèi)

public class Dept {
	private Integer deptno;
	private String dname;
	private String loc;
	// 自動(dòng)生成兩個(gè)構(gòu)造方法、Getter/Setter/toString
}

在同main/java包中,新建mapper包,里面新建同名的一個(gè)接口,一個(gè)映射文件

映射文件的 namespace 是接口的限定名

只有查詢(xún)語(yǔ)句有查詢(xún)

在接口文件中:

List<Dept> queryAll();

對(duì)應(yīng)的映射文件:

<mapper namespace="com.mybatis.mapper.DeptMapper">
<!-- 如果查詢(xún)中的列名和某個(gè)po類(lèi)的屬性名不一致,那么我們就需要配置結(jié)果的映射 -->
		<!-- type:po類(lèi)的名字 -->
	<resultMap type="Dept" id="dept">
		<!-- id標(biāo)記配置的是主鍵列的映射關(guān)系 -->
		<id column="no" property="deptno" />
		<!-- result配置的是非主鍵列和屬性的映射關(guān)系 -->
		<result column="name" property="dname"/>
		<result column="location" property="loc"/>
	</resultMap>
<!-- 如果查詢(xún)語(yǔ)句中的列名和某個(gè)po類(lèi)中的屬性名一致,那么需要配置resultType -->
						    	<!-- dept:上面的id值 -->
    <select id="queryAll" resultMap="dept">
    	select deptno as no,dname as name,loc as location
    	from dept 
    </select>
</mapper>

測(cè)試代碼:

@Test 
	public void queryDept() {
		DeptMapper mapper = session.getMapper(DeptMapper.class);
		List<Dept> list = mapper.queryAll();
		// foreach 生成
		for (Dept dept : list) {
			System.out.println(dept);
		}
	}

總結(jié)

如果查詢(xún)語(yǔ)句中的列名和某個(gè)po類(lèi)中的屬性名一致,那么需要配置resultType

如果查詢(xún)中的列名和某個(gè) po 類(lèi)的屬性名不一致,那么就需要配置結(jié)果的映射

id 標(biāo)記配置的是主鍵列的映射關(guān)系

result 配置的是非主鍵列和屬性的映射關(guān)系

到此這篇關(guān)于MyBatis輸入映射和輸出映射的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)MyBatis輸入映射和輸出映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • HashMap底層原理全面詳解面試絕對(duì)不慌

    HashMap底層原理全面詳解面試絕對(duì)不慌

    這篇文章主要介紹了HashMap底層實(shí)現(xiàn)原理詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Android/Java中創(chuàng)建類(lèi)實(shí)例的各種模式實(shí)例代碼

    Android/Java中創(chuàng)建類(lèi)實(shí)例的各種模式實(shí)例代碼

    這篇文章主要介紹了Android/Java中創(chuàng)建類(lèi)實(shí)例各種模式的相關(guān)資料,包括New關(guān)鍵字、靜態(tài)工廠方法、建造者模式、單例模式、依賴(lài)注入、抽象工廠模式、原型模式和Reflection,每個(gè)模式有其特點(diǎn)和適用場(chǎng)景,需要的朋友可以參考下
    2025-09-09
  • spring-boot 如何實(shí)現(xiàn)單次執(zhí)行程序

    spring-boot 如何實(shí)現(xiàn)單次執(zhí)行程序

    這篇文章主要介紹了spring-boot 實(shí)現(xiàn)單次執(zhí)行程序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java 中斷線程的幾種方式 interrupt()詳解

    java 中斷線程的幾種方式 interrupt()詳解

    中斷(Interrupt)一個(gè)線程意味著在該線程完成任務(wù)之前停止其正在進(jìn)行的一切,有效地中止其當(dāng)前的操作。這篇文章主要介紹了java 中斷線程的幾種方式 interrupt(),需要的朋友可以參考下
    2021-11-11
  • 手把手帶你入門(mén) Spring Security的具體流程

    手把手帶你入門(mén) Spring Security的具體流程

    這篇文章主要介紹了手把手帶你入門(mén) Spring Security,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

    解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題

    這篇文章主要介紹了解決JAVA非對(duì)稱(chēng)加密不同系統(tǒng)加密結(jié)果不一致的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • JavaPoet的使用指南小結(jié)

    JavaPoet的使用指南小結(jié)

    這篇文章主要介紹了JavaPoet的使用指南小結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 查找IDEA文件目錄下tomcat文件的具體位置

    查找IDEA文件目錄下tomcat文件的具體位置

    IDEA中Tomcat文件目錄位置可能在:C:\Users\用戶(hù)名\.IntelliJIdea\system\tomcat或C:\Users\用戶(hù)名\AppData\Local\JetBrains\IntelliJIdea\system\tomcat,可以通過(guò)運(yùn)行Tomcat查看Server中顯示的CATALINA_BASE找到對(duì)應(yīng)路徑
    2026-02-02
  • Java經(jīng)典面試題最全匯總208道(三)

    Java經(jīng)典面試題最全匯總208道(三)

    這篇文章主要介紹了Java經(jīng)典面試題最全匯總208道(三),本文章內(nèi)容詳細(xì),該模塊分為了六個(gè)部分,本次為第三部分,需要的朋友可以參考下
    2023-01-01
  • MyBatis的MapKey注解實(shí)例解析

    MyBatis的MapKey注解實(shí)例解析

    這篇文章主要為大家介紹了MyBatis的MapKey注解實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02

最新評(píng)論

嘉鱼县| 宝清县| 盐亭县| 称多县| 日喀则市| 北宁市| 敖汉旗| 文山县| 莱芜市| 曲沃县| 百色市| 崇信县| 南陵县| 若尔盖县| 新乡市| 银川市| 彰化市| 卓资县| 宁化县| 平江县| 石台县| 京山县| 金山区| 云阳县| 临猗县| 特克斯县| 吴桥县| 繁峙县| 定襄县| 略阳县| 凤阳县| 桂东县| 日喀则市| 桐庐县| 楚雄市| 奉贤区| 富顺县| 普陀区| 湄潭县| 白沙| 南部县|