国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Mybatis 中如何將sql執(zhí)行結果封裝為目標對象并返回的?都有哪些映射形式?

這篇具有很好參考價值的文章主要介紹了Mybatis 中如何將sql執(zhí)行結果封裝為目標對象并返回的?都有哪些映射形式?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在Mybatis中,可以通過配置映射文件來將SQL執(zhí)行結果封裝為目標對象并返回。 一種映射形式是使用resultType屬性,將查詢結果映射為指定的目標對象。例如:

xmlCopy code<select id="selectUser" resultType="com.example.User">
  SELECT * FROM user WHERE id = #{id}
</select>

另一種映射形式是使用resultMap屬性,通過定義映射關系來將查詢結果映射為目標對象。例如:

xmlCopy code<resultMap id="userMap" type="com.example.User">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <result property="age" column="age"/>
</resultMap>
<select id="selectUser" resultMap="userMap">
  SELECT * FROM user WHERE id = #{id}
</select>

除了以上兩種形式,還可以使用@Results和@Result注解來進行映射配置。例如:

javaCopy code@Results({
  @Result(property = "id", column = "id"),
  @Result(property = "name", column = "name"),
  @Result(property = "age", column = "age")
})
@Select("SELECT * FROM user WHERE id = #{id}")
User selectUserById(int id);

以上是Mybatis中將SQL執(zhí)行結果封裝為目標對象并返回的幾種映射形式。根據(jù)具體的需求和使用場景,可以選擇合適的方式來進行對象映射。

以下是一個示例代碼,演示了如何使用Mybatis將SQL執(zhí)行結果封裝為目標對象并返回:

創(chuàng)建User類作為目標對象:

javaCopy codepublic class User {
    private int id;
    private String name;
    private int age;
    
    // 省略getter和setter方法
}

創(chuàng)建映射文件(userMapper.xml):

xmlCopy code<!-- 配置命名空間 -->
<mapper namespace="com.example.UserMapper">
    <!-- 使用resultType將結果映射為User對象 -->
    <select id="selectUser" resultType="com.example.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <!-- 使用resultMap定義映射關系將結果映射為User對象 -->
    <resultMap id="userMap" type="com.example.User">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
    </resultMap>
    <select id="selectUserWithMap" resultMap="userMap">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

創(chuàng)建UserMapper接口:

javaCopy codepublic interface UserMapper {
    User selectUser(int id);
    User selectUserWithMap(int id);
}

配置Mybatis的SqlSessionFactory和MapperScannerConfigurer:

javaCopy code@Configuration
@MapperScan("com.example.mapper")
public class MybatisConfig {
    
    @Bean
    public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource);
        return sessionFactory.getObject();
    }
    
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
        scannerConfigurer.setBasePackage("com.example.mapper");
        return scannerConfigurer;
    }
    
    // 省略其他配置
}

使用UserMapper進行查詢:

javaCopy code@Autowired
private UserMapper userMapper;
public void getUser() {
    // 使用resultType方式
    User user = userMapper.selectUser(1);
    System.out.println(user.getId() + " - " + user.getName() + " - " + user.getAge());
    
    // 使用resultMap方式
    User userWithMap = userMapper.selectUserWithMap(1);
    System.out.println(userWithMap.getId() + " - " + userWithMap.getName() + " - " + userWithMap.getAge());
}

以上示例代碼演示了如何使用Mybatis將SQL執(zhí)行結果封裝為目標對象并返回,包括使用resultType和resultMap兩種映射形式。根據(jù)具體的需求選擇合適的方式進行對象映射。

目錄

Mybatis 中如何將 SQL 執(zhí)行結果封裝為目標對象并返回?都有哪些映射形式?

引言

結果映射

基于列名的映射

基于屬性的映射

嵌套映射

自動映射

結論


Mybatis 中如何將 SQL 執(zhí)行結果封裝為目標對象并返回?都有哪些映射形式?

引言

Mybatis 是一個優(yōu)秀的持久層框架,它提供了多種方式將 SQL 執(zhí)行結果封裝為目標對象并返回。本文將介紹在 Mybatis 中如何進行結果映射,并探討幾種常見的映射形式。

結果映射

結果映射是將 SQL 執(zhí)行結果與目標對象進行關聯(lián)的過程。Mybatis 提供了多種方式來進行結果映射,以便滿足不同的需求。

基于列名的映射

在基于列名的映射中,Mybatis 會將 SQL 查詢結果中的列名與目標對象的屬性名進行匹配,并將查詢結果的值賦給目標對象對應的屬性。需要注意的是,目標對象的屬性名必須和查詢結果的列名一致,且不區(qū)分大小寫。 示例:

javaCopy codepublic class User {
    private Long id;
    private String username;
    // getters and setters
}
// Mapper XML 文件
<select id="getUserById" resultType="User">
    SELECT id, username FROM users WHERE id = #{id}
</select>

基于屬性的映射

在基于屬性的映射中,Mybatis 會將 SQL 查詢結果中的值按照屬性的順序,依次賦給目標對象的屬性。需要注意的是,查詢結果的列數(shù)必須與目標對象的屬性個數(shù)一致,且按順序?qū)?示例:

javaCopy codepublic class User {
    private Long id;
    private String username;
    // getters and setters
}
// Mapper XML 文件
<select id="getUserById" resultType="User">
    SELECT id, username FROM users WHERE id = #{id}
</select>

嵌套映射

嵌套映射是指將 SQL 查詢結果包含的多個表的數(shù)據(jù)映射為一個復雜的目標對象。在 Mybatis 中,可以通過定義復雜的結果映射關系來實現(xiàn)嵌套映射。 示例:

javaCopy codepublic class Order {
    private Long id;
    private String orderNo;
    private User user;
    // getters and setters
}
// Mapper XML 文件
<select id="getOrderById" resultMap="OrderResultMap">
    SELECT o.id, o.order_no, u.id as user_id, u.username as user_username
    FROM orders o
    LEFT JOIN users u ON o.user_id = u.id
    WHERE o.id = #{id}
</select>
<resultMap id="OrderResultMap" type="Order">
    <id property="id" column="id"/>
    <result property="orderNo" column="order_no"/>
    <association property="user" javaType="User">
        <id property="id" column="user_id"/>
        <result property="username" column="user_username"/>
    </association>
</resultMap>

自動映射

自動映射是 Mybatis 提供的一種便捷的映射方式。在自動映射中,Mybatis 會根據(jù)查詢結果的列名與目標對象的屬性名自動進行映射,無需手動定義映射關系。需要注意的是,自動映射對于復雜的映射關系可能無法滿足需求,此時需要使用其他映射方式。 示例:

javaCopy codepublic class User {
    private Long id;
    private String username;
    // getters and setters
}
// Mapper XML 文件
<select id="getUserById" resultMap="AutoMapping">
    SELECT id, username FROM users WHERE id = #{id}
</select>
<resultMap id="AutoMapping" type="User" autoMapping="true"/>

結論

在 Mybatis 中,實現(xiàn)將 SQL 執(zhí)行結果封裝為目標對象并返回的過程是通過結果映射來實現(xiàn)的。基于列名的映射和基于屬性的映射是最常見的映射方式,可以滿足大部分的需求。而嵌套映射可以實現(xiàn)將多個表的數(shù)據(jù)映射為一個復雜的目標對象。自動映射提供了一種便捷的方式,可以根據(jù)列名自動進行映射,但對于復雜的映射關系可能無法滿足需求。在實際應用中,根據(jù)具體的業(yè)務需求選擇合適的映射方式,以實現(xiàn)高效、靈活的數(shù)據(jù)映射。文章來源地址http://www.zghlxwxcb.cn/news/detail-722674.html

到了這里,關于Mybatis 中如何將sql執(zhí)行結果封裝為目標對象并返回的?都有哪些映射形式?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • mybatis處理返回結果集

    mybatis處理返回結果集

    1 簡單類型輸出映射 返回簡單基本類型 返回結果需要定義后才能使用簡稱 eg:resultType=\\\"Admin\\\" 已經(jīng)定義過別名了,所以就可以使用簡稱 那么java中其它常用類型簡稱如何使用?(不使用簡稱就需要用全類名,eg:java.util.List) 在mybatis底層源碼中定義了一些常用的類型的簡稱 也可以

    2024年02月13日
    瀏覽(23)
  • java 異步執(zhí)行代碼(先返回結果,后執(zhí)行代碼

    ? ? ? ? 在用戶那,角色那變更后,要更新數(shù)據(jù),因為更新要比較長時間,需要先返回結果(2:已接收待執(zhí)行)。更新結束后,再返回值結果。 (執(zhí)行結果.?0:執(zhí)行失敗?; 1:執(zhí)行成功; 2:已接收待執(zhí)行) 使用?ExecutorService 異步 加?Thread.sleep(1000 * 10); 就明顯看得出差別了。

    2024年02月12日
    瀏覽(25)
  • java 異步執(zhí)行代碼(先返回結果,后執(zhí)行代碼)

    ? ? ? ? 在用戶那,角色那變更后,要更新數(shù)據(jù),因為更新要比較長時間,需要先返回結果(2:已接收待執(zhí)行)。更新結束后,再返回值結果。 (執(zhí)行結果.?0:執(zhí)行失敗?; 1:執(zhí)行成功; 2:已接收待執(zhí)行) 使用?ExecutorService 異步 加?Thread.sleep(1000 * 10); 就明顯看得出差別了。

    2024年02月09日
    瀏覽(28)
  • mybatis模糊查詢以及結果封裝詳解

    mybatis模糊查詢以及結果封裝詳解

    創(chuàng)建maven項目:項目結構如圖所示 準備數(shù)據(jù)庫表: 準備pom.xml所需的依賴: 編寫核心配置文件加載所需要的資源 編寫config.xml文件 創(chuàng)建工廠連接數(shù)據(jù)處理工具SqlSessionUtil.java SqlSessionUtil.java 創(chuàng)建學生實體類對象Student.java 1、添加模糊查詢的接口方法:getStudentSname; 2、配置接口方

    2023年04月22日
    瀏覽(25)
  • 【規(guī)范】SpringBoot接口返回結果及異常統(tǒng)一處理,這樣封裝才優(yōu)雅

    【規(guī)范】SpringBoot接口返回結果及異常統(tǒng)一處理,這樣封裝才優(yōu)雅

    博友的需求就是我最大的動力 博友一說話,本狗笑哈哈。 博友要我寫啥,我就寫啥 。 特來一篇關于 SpringBoot接口返回結果及異常統(tǒng)一處理 ,雖說封不封裝都能用,但咱后端也得給前端小姐姐留個好印象不是。項目前后端分離, 規(guī)范的數(shù)據(jù)傳輸格式,讓REST風格的API具有簡單

    2024年02月08日
    瀏覽(27)
  • mybatis查詢多個結果返回map--@MapKey使用方法

    mybatis查詢多個結果返回map--@MapKey使用方法

    目錄 ? ? ? ? 介紹 ?源碼分析: 在使用mybatis的時候遇到一種情況,查詢結果集返回多個,想用map接收,以前是用List對象接收,然后java代碼中轉(zhuǎn)換成map。其實mybatis是支持返回map的。下面就介紹使用方法。 測試代碼: 下面@MapKey中的id是BusinessPricePO中的一個屬性id,否則會報錯

    2024年02月12日
    瀏覽(23)
  • 使用多線程執(zhí)行任務,并獲取返回結果,附異步實現(xiàn)

    使用多線程執(zhí)行任務,并獲取返回結果,附異步實現(xiàn)

    這里創(chuàng)建了一個包含三個線程的固定線程池 線程池的介紹 根據(jù)主機情況實現(xiàn)自定義線程池: 也可以通過繼承 ThreadPoolExecutor 類來實現(xiàn)一個自定義線程池工具類。ThreadPoolExecutor 是 Java 標準庫中提供的一個線程池實現(xiàn),通過繼承它,我們可以實現(xiàn)自定義的線程池。 下面是一個繼

    2024年02月16日
    瀏覽(15)
  • 關于Elasticsearch(es)中使用sql返回結果只有1000條

    es中返回的結果只有1000條,這是默認的,想要返回更多的結果,需要做兩步: 1、設置max_result_window的大小 PUT indexName/_settings { “max_result_window”:20000 } max_result_window表示結果的最大數(shù)量 但是你這樣設置完了之后,查詢依舊還是1000條 2、查詢的時候加上fetch_size 這表示頁面上顯

    2024年02月14日
    瀏覽(16)
  • MyBatis動態(tài)SQL、模糊查詢與結果映射

    MyBatis動態(tài)SQL、模糊查詢與結果映射

    目錄 前言 一、MyBatis動態(tài)SQL 1.動態(tài)SQL是什么 2.動態(tài)SQL的作用 3.常用動態(tài)SQL元素 1. where + if 元素 2. set + if 元素 3. choose + when + otherwise 元素 4. 自定義 trim 元素 ?1. 自定義 trim 元素改寫上面的 where + if 語句 2. 自定義 trim 元素改寫上面的 set + if 語句 5. foreach 元素 6.SQL片段重用 二、

    2024年02月11日
    瀏覽(45)
  • bat 獲取手機SN & 處理adb cmd 返回結果-(For 中執(zhí)行多條cmd 的用法)

    bat 獲取手機SN & 處理adb cmd 返回結果-(For 中執(zhí)行多條cmd 的用法)

    tips: ①對應的 Notepad++ 的快捷鍵為?Ctrl+k?(單行、多行注釋)?Ctrl+q?(區(qū)塊注釋) ????????參數(shù)作為輸出參數(shù)時,注意: ????????????????★函數(shù)內(nèi)不要使用SETLOCAL和ENDLOCAL ????????????????★此文件不要設置setlocal enabledelayedexpansion ?執(zhí)行結果: 執(zhí)行結果:

    2024年02月15日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包