天天看點

MyBatis多表聯合查詢resultType的傳回值

  1. 一般資料按參數類型傳回
<select id="queryCarIdList" resultType="long">
        select id from t_car_car
</select>
           
<select id="queryDept" resultType="string">
        SELECT deptname FROM t_car_run where deptid = #{deptid} GROUP BY deptname
    </select>
           
  1. 根據某字段查詢
傳回的類型是實體類,因為查詢結果資料均為實體類中字段的資料
<select id="queryNumber" resultType="io.renren.modules.generator.entity.TCarRunEntity">
        select number from t_car_car where id = #{carid}
</select>
           
  1. 查詢結果為多條記錄,存放在list中傳回
傳回的類型是實體類,因為查詢結果資料均為實體類中字段的資料
<select id="queryCar" resultType="io.renren.modules.generator.entity.TCarCarEntity">
        select * from t_car_car
</select>
           
  1. 多表聯合查詢:t_car_car 、t_car_driver、 t_car_cardriver
t_car_cardriver存放的兩個字段分别是t_car_car和t_car_driver的主鍵id

解決方案:

1.resultType的傳回類型是java.util.Map,傳回得到的是List中存放的所有資料

<select id="queryDriver" resultType="java.util.Map">
        select driverid from t_car_cardriver where carid = #{id}
</select>
           

2.建立一個實體類

裡面存放的是查詢結果裡需要的字段名
// TCarCarDriver
private Long carid;
private Long driverid;
           

傳回類型為該實體類

<select id="queryDriver" resultType="TCarCarDriver">
        select driverid from t_car_cardriver where carid = #{id}
</select>
           

繼續閱讀