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

MyBatis使用resultMap如何解決列名和屬性名不一致

 更新時(shí)間:2022年01月20日 10:01:36   作者:藍(lán)海晴川  
這篇文章主要介紹了MyBatis使用resultMap如何解決列名和屬性名不一致的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

使用resultMap如何解決列名和屬性名不一致

resultType可以指定將查詢結(jié)果映射為pojo,但需要pojo的屬性名和sql查詢的列名一致方可映射成功。

如果sql查詢字段名和pojo的屬性名不一致,可以通過(guò)resultMap將字段名和屬性名作一個(gè)對(duì)應(yīng)關(guān)系 ,resultMap實(shí)質(zhì)上還需要將查詢結(jié)果映射到pojo對(duì)象中。

需求:查詢訂單表orders的所有數(shù)據(jù)

SELECT id,user_id,number,createtime,note FROM orders,這里的數(shù)據(jù)庫(kù)表user_id與pojo的Order對(duì)象中的userId不一致

orders表:

在這里插入圖片描述

Order對(duì)象:

在這里插入圖片描述

OrderMapper.xml配置

其中注釋掉了另一種使用數(shù)據(jù)庫(kù)別名解決列名和屬性名不一致的問(wèn)題

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.sea.crm.mapper.OrderMapper">
	<!-- 使用as 給列取別名解決類名和屬性名不一致的情況 -->
	<!--<select id="queryAll" resultType="Order"> SELECT id,user_id as userId,number,createtime,note 
		FROM orders </select> -->
	<!-- 使用resultMap解決列名和屬性名不一致的情況 -->
	<!-- 配置一個(gè)resultMap映射列和屬性 -->
	<resultMap type="Order" id="orderMap">
		<!-- id:設(shè)置ResultMap的id -->
		<!-- 定義主鍵 ,非常重要。如果是多個(gè)字段,則定義多個(gè)id -->
		<!-- property:主鍵在pojo中的屬性名 -->
		<!-- column:主鍵在數(shù)據(jù)庫(kù)中的列名 -->
		<id column="id" property="id" />
		<!-- 映射其他普通列 -->
		<result column="user_id" property="userId" />
		<result property="number" column="number" />
		<result property="createtime" column="createtime" />
</resultMap>
	<!-- 方法的返回值可以使用 -->
	<select id="queryAll" resultMap="orderMap">
		SELECT id,user_id ,number,createtime,note FROM orders
	</select>
</mapper>

單元測(cè)試

public class OrderMapperTest {
	
		SqlSessionFactory factory = null;
		private OrderMapper orderMapper = null;
		@Before
		public void testInit() {
			// 1. 創(chuàng)建SqlSessionFactoryBuilder對(duì)象
			SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
			// 2. 加載SqlMapConfig.xml配置文件
			// /20181013_mybatis/config/SqlMapConfig.xml
			InputStream in = MyBatisTest.class.getResourceAsStream("/SqlMapConfig.xml");
			// 3. 創(chuàng)建SqlSessionFactory對(duì)象
			factory = builder.build(in);
		}
        @Test
		public void testqueryAll() {
			SqlSession session = factory.openSession();
			OrderMapper orderMapper = session.getMapper(OrderMapper.class);
			List<Order> orders = orderMapper.queryAll();
			System.out.println(orders);
		}
	}

實(shí)體屬性名與表字段名不匹配問(wèn)題

問(wèn)題

    <select id="getUser" parameterType="String"
        resultType="User">
        select * from user where username=#{username}
    </select>
  • 這是映射文件的配置,myBatis在查詢出結(jié)果之后,會(huì)幫我們把查詢結(jié)果一一對(duì)應(yīng)地填充到User對(duì)象中
  • 但是,它怎么知道如何去對(duì)應(yīng)查詢出來(lái)的字段和屬性呢?只有在實(shí)體的屬性名和表的字段名相同時(shí),才能自動(dòng)一一對(duì)應(yīng)。
  • 那么,如果屬性名和表的字段名不一樣怎么辦?有兩種解決方案

現(xiàn)有實(shí)體類Order:

這里寫(xiě)圖片描述

數(shù)據(jù)庫(kù)表orders:

這里寫(xiě)圖片描述

解決方案一

    <select id="getOrder" parameterType="int"
        resultType="Order">
        select order_id  id,order_name orderName from orders where order_id=#{id}
    </select>

查詢的時(shí)候使用別名,就可以解決

解決方案二

    <!-- 配置一個(gè)映射關(guān)系 -->
    <resultMap type="Order" id="orderResultMap">
        <id property="id" column="order_id"/>
        <result property="orderName" column="order_name"/>
    </resultMap>
    <!-- 查詢結(jié)果集引用配好的映射關(guān)系 -->
    <select id="getOrder" parameterType="int"
        resultMap="orderResultMap">
        select order_id ,order_name from orders where order_id=#{id}
    </select>
  • resultMap中,id標(biāo)簽專門為主鍵服務(wù),當(dāng)然,全部都用result
  • property為實(shí)體類屬性
  • column為表的列名

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

相關(guān)文章

  • 完整B樹(shù)算法Java實(shí)現(xiàn)代碼

    完整B樹(shù)算法Java實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了完整的B樹(shù)算法Java實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • SpringBoot整合Security實(shí)現(xiàn)權(quán)限控制框架(案例詳解)

    SpringBoot整合Security實(shí)現(xiàn)權(quán)限控制框架(案例詳解)

    Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框,是一個(gè)重量級(jí)的安全管理框架,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-08-08
  • java實(shí)現(xiàn)excel導(dǎo)出合并單元格的步驟詳解

    java實(shí)現(xiàn)excel導(dǎo)出合并單元格的步驟詳解

    這篇文章主要介紹了java實(shí)現(xiàn)excel導(dǎo)出合并單元格,通過(guò)使用Apache POI庫(kù),我們可以方便地創(chuàng)建Excel文件、填充數(shù)據(jù)、合并單元格和導(dǎo)出Excel文件,需要的朋友可以參考下
    2023-04-04
  • Mybatis之@ResultMap,@Results,@Result注解的使用

    Mybatis之@ResultMap,@Results,@Result注解的使用

    這篇文章主要介紹了Mybatis之@ResultMap,@Results,@Result注解的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • springsecurity實(shí)現(xiàn)用戶登錄認(rèn)證快速使用示例代碼(前后端分離項(xiàng)目)

    springsecurity實(shí)現(xiàn)用戶登錄認(rèn)證快速使用示例代碼(前后端分離項(xiàng)目)

    這篇文章主要介紹了springsecurity實(shí)現(xiàn)用戶登錄認(rèn)證快速使用示例代碼(前后端分離項(xiàng)目),本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-03-03
  • Java 如何使用JDBC連接數(shù)據(jù)庫(kù)

    Java 如何使用JDBC連接數(shù)據(jù)庫(kù)

    這篇文章主要介紹了Java 如何使用JDBC連接數(shù)據(jù)庫(kù),幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Java 3D入門之基本圖形功能 附源碼

    Java 3D入門之基本圖形功能 附源碼

    Java3D API是Sun定義的用于實(shí)現(xiàn)3D顯示的接口。3D技術(shù)是底層的顯示技術(shù),Java3D提供了基于Java的上層接口。Java3D把OpenGL和DirectX這些底層技術(shù)包裝在Java接口中。這種全新的設(shè)計(jì)使3D技術(shù)變得不再繁瑣且可以加入到J2SE、J2EE的整套架構(gòu),故保證了Java3D技術(shù)強(qiáng)大的擴(kuò)展性
    2021-10-10
  • java開(kāi)源調(diào)度如何給xxljob加k8s執(zhí)行器

    java開(kāi)源調(diào)度如何給xxljob加k8s執(zhí)行器

    這篇文章主要介紹了java開(kāi)源調(diào)度如何給xxljob加一個(gè)k8s執(zhí)行器,?xxljob?在設(shè)計(jì)上,抽象出了執(zhí)行器的接口,所以實(shí)現(xiàn)一個(gè)語(yǔ)言的執(zhí)行器并不復(fù)雜,這里主要探索下,如何利用k8s的pod?的能力,使用?xxljob?調(diào)度?pod?運(yùn)行,實(shí)現(xiàn)一個(gè)通用的和語(yǔ)言無(wú)關(guān)的執(zhí)行器
    2022-02-02
  • Java抽獎(jiǎng)?chuàng)屬?gòu)算法

    Java抽獎(jiǎng)?chuàng)屬?gòu)算法

    這篇文章主要為大家詳細(xì)介紹了Java抽獎(jiǎng)?chuàng)屬?gòu)算法,ava實(shí)現(xiàn)的抽獎(jiǎng)?chuàng)屬?gòu)算法,用數(shù)據(jù)庫(kù)行鎖實(shí)現(xiàn),支持集群,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Java輸入輸出流實(shí)例詳解

    Java輸入輸出流實(shí)例詳解

    這篇文章主要介紹了Java輸入輸出流,結(jié)合實(shí)例形式詳細(xì)分析了Java常見(jiàn)的輸入輸出常用操作技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2018-09-09

最新評(píng)論

南投县| 吉木乃县| 阿尔山市| 开原市| 新蔡县| 隆回县| 芦山县| 家居| 阿尔山市| 南靖县| 大化| 芷江| 长岭县| 贺兰县| 龙井市| 乐安县| 济源市| 石柱| 湄潭县| 萍乡市| 克什克腾旗| 彭州市| 资兴市| 灵武市| 乾安县| 锦屏县| 泰兴市| 英吉沙县| 咸丰县| 靖江市| 驻马店市| 眉山市| 康乐县| 沂南县| 宝鸡市| 虎林市| 襄城县| 始兴县| 延川县| 普洱| 连州市|