溫馨提示×

mybatis的select屬性返回結(jié)果類型如何設(shè)置

小樊
81
2024-10-13 19:09:39
欄目: 編程語言

在 MyBatis 中,<select> 標(biāo)簽的 resultType 屬性用于設(shè)置查詢結(jié)果的類型。這可以是一個簡單的 Java 類名,也可以是一個完全限定的類名。以下是一些示例:

  1. 設(shè)置簡單類名:
<select id="findUserById" resultType="com.example.User">
    SELECT * FROM users WHERE id = #{id}
</select>

在這個例子中,查詢結(jié)果將被映射到 com.example.User 類。

  1. 設(shè)置完全限定的類名:
<select id="findUserById" resultType="com.example.mapper.UserDTO">
    SELECT u.id, u.username, u.email
    FROM users u
    WHERE u.id = #{id}
</select>

在這個例子中,查詢結(jié)果將被映射到 com.example.mapper.UserDTO 類。注意,在這種情況下,我們可能需要為 DTO 類提供一些額外的構(gòu)造函數(shù)或字段映射,以便正確地將查詢結(jié)果設(shè)置到 DTO 類的實例中。

  1. 如果查詢結(jié)果包含嵌套對象,可以使用別名映射:
<resultMap id="userResultMap" type="com.example.User">
    <id property="id" column="id"/>
    <result property="username" column="username"/>
    <result property="email" column="email"/>
    <association property="address" javaType="com.example.Address">
        <id property="id" column="address_id"/>
        <result property="street" column="street"/>
        <result property="city" column="city"/>
    </association>
</resultMap>

<select id="findUserById" resultMap="userResultMap">
    SELECT u.id, u.username, u.email, a.id as address_id, a.street, a.city
    FROM users u
    LEFT JOIN addresses a ON u.address_id = a.id
    WHERE u.id = #{id}
</select>

在這個例子中,我們定義了一個名為 userResultMap<resultMap>,它將查詢結(jié)果映射到 com.example.User 類。我們還定義了一個嵌套的 <association> 元素,用于將查詢結(jié)果中的 address 字段映射到 com.example.Address 類。

0