1. 程式人生 > >Mysql的批量操作(批量查詢)

Mysql的批量操作(批量查詢)

前面幾篇Mysql的文章一直在寫普通查詢,從這篇開始,會寫一些Mysql的批量操作。

本篇主要是mysql的批量查詢,主要是通過id來查詢,如果需要查詢多個id對應的多個數據,使用for迴圈去查,對程式來說不太高效。在這裡就可以通過批量迴圈進行查詢。

直接上程式碼:

java程式碼部分:

         @Responsebody

         @RequestMapping("/XXX.do")

        public void XXX(ModelMap model ,HttpServletRequest request,HttpServletResponse response) {

                     // 這裡是要傳到mapper中的集合,集合裡面封裝的是你要查詢的資料的id

                     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)這種表現形式