记录处理异常
本文仅供自己日后查找所用。
首先我要做的是在设置company的认证方式,认证方式可能多个,分为免费上网、微信认证、短信认证、密码认证。那么在CompanyAuthType实体中就会有多条记录。
先上代码:
public String editCom(Company model, String assets, String contextPath, String realPath) throws Exception{ Company company = (Company)companyDao.findById(model.getCompanyId()); if(null == company){ throw new SerialException(); } //设置信息: 名字、电话号码、成功连接 company.setCompanyName(model.getCompanyName()); company.setMobile(model.getMobile()); company.setSuccessUrl(model.getSuccessUrl()); companyDao.update(company); //先找到所认证方式,存在则删除 List<CompanyAuthType> catl = iCompanyAuthTypeDAO.findByProperties(new String[]{"company.companyId"}, new Object[]{model.getCompanyId()}); if(null != catl && !catl.isEmpty()){ //删除原有的认证方式记录 iCompanyAuthTypeDAO.deleteByProperties(new String[]{"company.companyId"}, new Object[]{model.getCompanyId()}, null); } //设置商家认证方式,一或多个 if(!StringUtils.isEmpty(model.getIds())){ iCompanyAuthTypeDAO.deleteByProperties(new String[]{"company.companyId"},new Object[]{model.getCompanyId()},null); String[] ids = model.getIds().split(","); for(String id:ids){ AuthType at = (AuthType)iAuthTypeDAO.findById(Long.valueOf(id)); if(null != at){ CompanyAuthType cat = new CompanyAuthType(); cat.setAuthType(at); cat.setCompany(company); iCompanyAuthTypeDAO.save(cat); } } } //通过CompanyId查找所有AP List<Ap> lst = iApDAO.findByProperties(new String[]{"company.companyId"}, new Object[]{model.getCompanyId()}); if(null != lst && !lst.isEmpty()){ for(Ap ap:lst){ //修改所有AP登录成功链接 if(null != model.getSuccessUrl() && "" != model.getSuccessUrl()){ ap.setSuccessUrl(model.getSuccessUrl()); } //修改AP认证方式 iApDAO.save(ap); } }
}
上面是完整的action实现,本次记录主要是说明在实现action中遇到的问题和考虑不周的地方。
首先是判断前台传回的认证IDS串是否为空,如果不为空的话就删除原有的认证方式,然后就保存IDS的认证方式,首先找到authtype中的实体(通过IDS中id),通过CompanyId找到Company实体。最后new CompanyAuthType,最用set方法和save方法保存记录。注意:在保存之前要判断认证实体和商家实体是否为空,在不为空的情况下保存。
然后还要修改商家下所有Ap的登录成功链接。在修改之前要判断通过model获得的成功链接是否为空,再保存。
用我无限的热情燃烧无悔的青春!