关闭

关于批量选择新增成员到群组列表的实现方法。

标签: mybatisjavaspring mvcartdiaartdialog 6
248人阅读 评论(0) 收藏 举报
分类:

            此功能还是基于myeclipse+tomcat+oracle来实现的,框架还是:springmvc+mybatis持久数据。

如下,我会在贴代码的同时,作一些简单的说明(不贴代码的程序员都是耍流氓偷笑):

(1)Controller:

/**
     * 新增成员
     * @param request
     * @return
     */
    @RequestMapping("/addGroupPeer")
    @ResponseBody
    public Object addGroupPeer(HttpServletRequest request){
        Map<String, String> param = super.getParamValues(request);
        param.put("gid",request.getParameter("gid"));
        List<String> errorList = groupService.addGroupPeer(param);
        return errorList;
    }

备注:errorList是新增时的错误信息回调到前台json数据,展示给用户,下面先把前台ajax的部分贴出来:

(2)jsp

$.ajax({
                       type: "POST",
                       url: $("#formId").attr("action"),
                       data: {gid:gid,uids:uids,admins:admins},
                       dataType: "JSON",
                       error: function(){alert("服务器出错!");},
                       success: function(data){
                               if(data == ""){
                                parent.showTip('保存成功!');
                                parent.closeDialogPeer(currentPage);
                               }else{
                                   parent.showTipPeer(data+',保存失败!');
                               }
                       }
                });

备注:data就是后台errorList传过来的json数据,直接以弹框的样式展示出来,此处弹框用到的是:artdialog 6,有兴趣可以研究下。

(3)serviceImpl

/**
     * 新增成员
     */
    @Transactional("txManager_1")
    @Override
    public List<String> addGroupPeer(Map<String, String> param) {
        List<String> errorList = new ArrayList<String>();
        
        String gid = param.get("gid")==null? "": param.get("gid");
        String uids = param.get("uids")==null? "": param.get("uids");
        String admins = param.get("admins")==null? "": param.get("admins");
        String[] uidsArray = uids.split(",");
        List<Map<String, String>> paramList = new ArrayList<Map<String, String>>();
        int len = uidsArray.length;
        StringBuffer errorInfo = new StringBuffer();// 错误信息
        Map<String, String> tempPeer = null;// 数据临时存放成员Map
                for(int i=0;i<len;i++ ){
                    tempPeer = new HashMap<String,String>();
                    tempPeer.put("gid", gid);
                    tempPeer.put("userid", uidsArray[i]);
                    if (admins.contains(uidsArray[i])) {
                        tempPeer.put("right", "1");
                    }else{
                        tempPeer.put("right", "0");
                    }
                    paramList.add(tempPeer);// 添加记录到List
                }
                
                if (paramList.size() > 0) {
                    // 查询是否已存在成员
                    List<Map<String, String>> existList = groupMapper.selectExitUserid(paramList);
                    for (Map<String, String> m : existList) {
                        for (Iterator ite = paramList.iterator(); ite.hasNext();) {
                            Map<String, String> temp = (Map<String, String>) ite.next();
                            if (m.get("USERID") != null && m.get("USERID").equals(temp.get("userid"))) {
                                errorInfo.append("成员").append(temp.get("userid")).append("已存在");
                                errorList.add(errorInfo.toString());
                                errorInfo.setLength(0);// 清空错误信息
                                ite.remove();
                            }
                        }
                    }
                    if (errorList.size()==0) {
                        //新增成员
                        groupMapper.addGroupPeer(paramList);
                    }
                }
        return errorList;
    }

备注:此处用到了事务控制,当errorList为null时,直接跳出addGroupPeer方法,将错误的errorList信息反馈给用户。

(4)mapper.xml

<!-- 查询已存在的成员 -->
    <select id="selectExitUserid" parameterType="List" resultType="Map">
        select userid from tp_im_group_peer where userid in
        <foreach collection="list" item="item" index="idx" open="(" separator="," close=")">
            #{item.userid,jdbcType=VARCHAR}
        </foreach>
        and    gid in
        <foreach collection="list" item="item" index="idx" open="(" separator="," close=")">
            #{item.gid,jdbcType=VARCHAR}
        </foreach>
    </select>

备注:此处用到了foreach标签,之前博客有介绍,此处不再阐述了,需要注意的几点,list是service里面查询出来的existList集合,遍历时where后面的条件

一定要带上item(item.userid),这个写法要感谢胡某某,让我没掉进坑。

好了,这篇文章就到这了,下次要去写篇Go的,让胡某某插不上话,呵呵!




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11121次
    • 积分:165
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:0篇
    • 译文:1篇
    • 评论:7条
    文章分类
    文章存档