spring boot 批量更新数据
生活随笔
收集整理的這篇文章主要介紹了
spring boot 批量更新数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ids
status:0,1狀態
pageId:父級頁ID
navController.jave /*** 批量組排序*/ @RequestMapping(value = "screen_sort") @ResponseBodypublic ResponseData doScreenSort(@RequestParam(required = false, value = "ids[]") Integer[] ids, @RequestParam("status") Integer status, @RequestParam("pageId") Integer pageId) {if (Detect.notEmpty(ids)) {List<Integer> idList = Arrays.asList(ids);try {Integer b = iDmsNavigationScreenService.navScreenSort(idList, status, pageId);if (b==1) {return ResponseUtil.success("修改成功");} else {if(b==2) {return ResponseUtil.businessError("不可上移");} else if(b==3) {return ResponseUtil.businessError("不可下移");} else {return ResponseUtil.businessError("移動失敗");}}} catch (Exception e) {log.error("do_move_up_v_down_nav_screen_sort,err--{}", e);return ResponseUtil.businessError("移動失敗");}} else {return ResponseUtil.paramInvalidError("參數錯誤");}}iDmsNavigationScreenService.java
/*** 批量上下移*/Integer navScreenSort(List<Integer> ids, Integer status, Integer pageId);?
navServiceImpl.java
@Overridepublic Integer navScreenSort(List<Integer> checkedList, Integer status, Integer pageId) {//組上線列表EntityWrapper<DmsNavigationScreen> entityWrapper = new EntityWrapper<>();entityWrapper.eq("page_id", pageId);entityWrapper.eq("fr_epg_status", LoadData.getDicIdByKey(Constant.DB_DESKTOP_SCREEN_STATUS_ONLINE));entityWrapper.isNull("deleted_at");entityWrapper.orderBy("sort", true);List<DmsNavigationScreen> screens = iDmsNavigationScreenService.selectList(entityWrapper);if (!screens.isEmpty()) {List<Integer> onlinesArrayList = new ArrayList<>();//所選位置 ID對應Map<Integer,Integer> keyMapList = new LinkedHashMap<>();Map<Integer,Integer> sortMapList = new LinkedHashMap<>();Map<Integer,Integer> dataMapList = new LinkedHashMap<>();Integer k = 0;for (DmsNavigationScreen screen : screens) {onlinesArrayList.add(screen.getId());sortMapList.put(screen.getId(), screen.getSort());if(checkedList.contains(screen.getId())) {keyMapList.put(screen.getId(),k);}k++;}Integer onlinesArrayLength = onlinesArrayList.size();if(status==0) {if (keyMapList.values().contains(0)) {System.out.println("不可上移");return 2;}for(Integer keys :keyMapList.keySet()){Integer key = keyMapList.get(keys);Integer tmp = onlinesArrayList.get(key - 1);Integer sortTmp = sortMapList.get(tmp);Integer sorts = sortMapList.get(onlinesArrayList.get(key));sortMapList.put(onlinesArrayList.get(key - 1), sorts);dataMapList.put(onlinesArrayList.get(key - 1), sorts);onlinesArrayList.set(key - 1, onlinesArrayList.get(key));sortMapList.put(onlinesArrayList.get(key), sortTmp);dataMapList.put(onlinesArrayList.get(key), sortTmp);onlinesArrayList.set(key, tmp);}} else {if (keyMapList.values().contains(onlinesArrayLength - 1)) {System.out.println("不可下移");return 3;}Integer checkedListLength = checkedList.size();List<Integer> checkedKeyArrayList = new ArrayList<Integer>(keyMapList.values());for (int i = checkedListLength - 1; i >= 0; i--) {Integer v = checkedKeyArrayList.get(i);Integer t = v++;Integer tmp = onlinesArrayList.get(t);Integer sortTmp = sortMapList.get(tmp);Integer sorts = sortMapList.get(onlinesArrayList.get(v));sortMapList.put(onlinesArrayList.get(t), sorts);dataMapList.put(onlinesArrayList.get(t), sorts);onlinesArrayList.set(t, onlinesArrayList.get(v));sortMapList.put(onlinesArrayList.get(v), sortTmp);dataMapList.put(onlinesArrayList.get(t), sortTmp);onlinesArrayList.set(v, tmp);}}//return true;return dmsNavigationScreenMapper.updateScreenSort(dataMapList) > 0 ? 1 : 0;}return 0;}dmsNavigationScreenMapper.java
/*** 批量更新排序*/Integer updateScreenSort(@Param("mapList") Map<Integer,Integer> dataMapList);mapper.xml
<update id="updateScreenSort" parameterType="java.util.Map">UPDATE dms_navigation_screen SET sort = CASE id<foreach collection="mapList" index="index" item="item"><if test="item != null">WHEN #{index} THEN #{item}</if></foreach>END WHERE id IN (<foreach collection="mapList" item="item" index="index" separator=","><if test="item != null">#{index}</if></foreach>)</update>?
?
總結
以上是生活随笔為你收集整理的spring boot 批量更新数据的全部內容,希望文章能夠幫你解決所遇到的問題。