mybatis查询in的字段有索引,比如说是主键查询, 但是in的字段过多导致索引失效,
这个时候可以考虑将in的数量变少, 200以内都可以, 在数据库方面采用 foreach unionall 的方式将数据集合查询出来
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_sjzfxxWHERE ywdh in<foreach collection="ddbhArray" item="ddbh" open="(" separator="," close=")">#{ddbh}</foreach></foreach>) t</select>