mybatis查询in的字段有索引,比如说是主键查询, 但是in的字段过多导致索引失效,
这个时候可以考虑将in的数量变少, 200以内都可以, 在数据库方面采用 foreach unionall 的方式将数据集合查询出来
c
Service层:
List<List<String>> zffsDdbhList = Lists.partition(ddbhList, MagicNumber.INT200);
Dao层:
List<HotelKhSjzfxx> getListByDdbhArray(@Param("ywdh") List<List<String>> ywdh);
sql.xml:
<select id="getListByDdbhArray" resultType="cn.vetech.center.hotel.entity.HotelKhSjzfxx">
SELECT * from (
<foreach collection="ywdh" item="ddbhArray" index="index" separator="union all">
SELECT * FROM hotel_kh_sjzfxx
WHERE ywdh in
<foreach collection="ddbhArray" item="ddbh" open="(" separator="," close=")">
#{ddbh}
</foreach>
</foreach>
) t
</select>