Mysql的批量操作(批量查詢)
前面幾篇Mysql的文章一直在寫普通查詢,從這篇開始,會寫一些Mysql的批量操作。
本篇主要是mysql的批量查詢,主要是通過id來查詢,如果需要查詢多個id對應的多個數據,使用for迴圈去查,對程式來說不太高效。在這裡就可以通過批量迴圈進行查詢。
直接上程式碼:
java程式碼部分:
@Responsebody
@RequestMapping("/XXX.do")
public void XXX(ModelMap model ,HttpServletRequest request,HttpServletResponse response) {
List<String> idList = new ArrayList<String>
idList.add("id1");
idList.add("id2");
// 建立map的過程就省略了,把封裝了id的集合放到你的map集合中
map.put("idList",idList);
// 把map作為引數傳到對應的Mapper中
}
sql語句的寫法:
<select id = "XXX(方法名)" parameterType = "hashmap" resultMap = "BaseResultMap">
select * from table(table寫自己的表名稱)
where 1 = 1
<if test="state != null and state != ' ' ">
and state = #{state,jdbcType = INTEGER}
</if>
<if test="number != null and number !=' ' ">
and (sjrdh like concat ('%',#{number,jdbcType=VARCHAR},'%')
or hgh = #{number,jdbcType=VARCHAR})
</if>
and id in
<foreach collection="idList" item="item" index ="index" open="(" separator="," close=")">
#{item}
</foreach>
order by XX(根據某個欄位排序) desc
<if test ="beginIndex != null and beginIndex != -1 ">
limit #{beginIndex,jdbcType=INTEGER},#{pageSize,jdbcType=INTEGER}
</if>
</select>該sql語句是根據條件按照某個順序進行的批量查詢,如果只要求批量查詢,不根據欄位篩選,可以把<if>去掉。其中<foreach>中的collenction的值為map集合中的idList集合的Key值。item是指定List集合中的條目為item,此處表示String型別的id。open,close形式寫出來語句以後(id1,id2)這種表現形式