背景:
同一张表中不能有重复的名称,添加时光标失焦文本框Ajax判断,查一下数据库是否有这个名称即可。
进行修改时,如何判断呢?要是还是按照添加验证方式判断,我直接失焦,也会提示重复。
假如一个书架放不同名称的书籍,书和书架都有书名称、位置信息,(首图)假如我拿了一本书,再放一本回原位的时候:
1.书籍名称与书架上其他任意一个不同,可以放回,不会重复。(放新书)
2.书籍名称与书架上其他任意一个相同,如果原书放回,不重复,书籍的标记位置与书架标记位置不同,则重复。(放已有书名的书)
结论:对于修改,放新书可以;
放已有书名的书,必须放回原位,位置不同则重复。
/** *@Title:checkGroupsNameExsis *@Description:检测群组名称是否存在 *@param memGroupsDTO会员群组数据传输实体类 *@Return:boolean返回布尔类型值,存在返回true,不存在返回false *@author:徐凯强 *@Date:2014-8-26下午08:00:12 */ public boolean checkGroupsNameExsis(MemGroupsDTO memGroupsDTO,String method) { StringBuilder sb = new StringBuilder(" from MemGroups o where 1=1 "); boolean flag = false; /** 查找数据库中是否有这个名称 **/ sb.append(" and o.groupName='" + memGroupsDTO.getGroupName() + "'"); List<MemGroups> memList = em.createQuery(sb.toString()).getResultList(); /** 如果添加方法,有一条数据,表示重复,true表示重复,false表示不重复 */ if (method.equals("addSave")) { if (memList.size() > 0) { flag = true; } else { flag = false; } } else { /** 如果是修改方法,编号也相同表示不重复,编号不同不重复 */ if (memList.size() > 0) { if (memList.get(0).getGroupId().equals(memGroupsDTO.getGroupId())) {//放旧书,放原位 flag = false; } else { flag = true; } } else { flag = false;//放新书 } } return flag; }