此功能还是基于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的,让胡某某插不上话,呵呵!