mybatis映射文件:
<select id="find" parameterType="java.util.Map" resultType="map">
SELECT org_id,
org.org_name, ${sqlParam},
r.create_date
FROM r_index_org_score
</select>
${sqlParam} 是通過代碼拼接的sql片段,通過$直接拼接到SQL語句中,拼接的SQL片段中存在動態字段,不在mybatis映射文件的resultMap中,這時該語句的返回類型使用 map(即 resultType="map"),在mapper層通過 Map接收。
${sqlParam} 的內容如下:
max( CASE r.index_id WHEN '1' THEN r.score ELSE 0 END ) zzthyl,
max( CASE r.index_id WHEN '2' THEN r.score ELSE 0 END ) OA_HYL,
max( CASE r.index_id WHEN '3' THEN r.score ELSE 0 END ) ZLB_ZCL,
Mapper層對該方法的調用,通過Map接收查詢結果,如下:
List<Map<String, Object>> find(@Param("orgId") int orgId);
這樣獲取的所有字段類型,與數據庫中對應字段類型完全一致,按照jdk的語法環境進行解析為對應數據格式。與持久化層的resultMap中的屬性格式、與DAO層的屬性格式無關。