您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Mybatis無主鍵的關聯數據去重問題如何解決”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Mybatis無主鍵的關聯數據去重問題如何解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
使用Mybatis的association關聯查詢時,例如 DeviceInfo 關聯 RawData 查詢數據,如果查詢的SQL不包含DeviceInfo的主鍵時
Mybatis會將查詢的結果集按照RawData數據進行去重,與你有沒有使用group by無關。
如果你的查詢不需要關聯數據,重寫resultMap,去掉association關聯的部分,此時無論你有沒有查詢主鍵,返回的數據都是正確數據
<resultMap id="DeviceTypeResultMap" type="DeviceInfo"> <!-- 有沒有查詢主鍵,返回的數據都是正確數據 --> <!--<id column="device_id" property="deviceId" jdbcType="BIGINT"></id>--> <result column="device_type_name" property="deviceTypeName" jdbcType="VARCHAR" /> <result column="device_type_id" property="deviceTypeId" jdbcType="INTEGER" /> </resultMap>
如果你的查詢不需要關聯數據,但是懶的再寫resultMap,那么SQL的查詢字段一定要加上主表的主鍵
例子:
DeviceInfo
public class DeviceInfo implements Serializable { private Long deviceId; private Integer deviceTypeId; private String deviceTypeName; private RawData rawData; …… }
DeviceInfo 關聯查詢 RawData 返回的 resultMap
<resultMap id="BaseResultMap" type="DeviceInfo"> <id column="device_id" property="deviceId" jdbcType="BIGINT"></id> <result column="mac" property="mac" jdbcType="VARCHAR" /> <result column="device_type_id" property="deviceTypeId" jdbcType="BIGINT" /> <association property="rawData" javaType="RawData"> <id column="device_id" property="deviceId" /> <result column="data_time" property="dataTime" jdbcType="TIMESTAMP" /> <result column="battery_power" property="batteryPower" jdbcType="TINYINT" /> </association> </resultMap>
根據 device_type_id 分組查詢 device_type_id 和 device_type_name
<select id="getDeviceTypeList" parameterType="DeviceInfo" resultMap="BaseResultMap"> select device_type_id,device_type_name FROM tb_device_info group by device_type_id order by null </select>
讀到這里,這篇“Mybatis無主鍵的關聯數據去重問題如何解決”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。