在 MyBatis 中,<select>
標簽的 resultType
屬性用于設置查詢結果的類型。這可以是一個簡單的 Java 類名,也可以是一個完全限定的類名。以下是一些示例:
<select id="findUserById" resultType="com.example.User">
SELECT * FROM users WHERE id = #{id}
</select>
在這個例子中,查詢結果將被映射到 com.example.User
類。
<select id="findUserById" resultType="com.example.mapper.UserDTO">
SELECT u.id, u.username, u.email
FROM users u
WHERE u.id = #{id}
</select>
在這個例子中,查詢結果將被映射到 com.example.mapper.UserDTO
類。注意,在這種情況下,我們可能需要為 DTO 類提供一些額外的構造函數或字段映射,以便正確地將查詢結果設置到 DTO 類的實例中。
<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>
,它將查詢結果映射到 com.example.User
類。我們還定義了一個嵌套的 <association>
元素,用于將查詢結果中的 address
字段映射到 com.example.Address
類。