service层
首先我们需要用一个接口表明service层都有哪些操作:
public interface InfoService { Ret add(Info info); //注册 Ret delete(String name,String password); //删除用户信息 Ret login(String name,String password); //登录 Ret modifyName(String name,String password,String newName); Ret modifyPassword(String name,String password,String newPassword); }
然后会有一个实现类,去实现这些方法:
@Service public class InfoServiceImpl implements InfoService { @Autowired InfoRepository infoRepository; //自动注入DAO类 @Override public Ret add(Info info) { if(info == null){ return Ret.error(InfoResult.INFO_EMPTY); }else{ //info if(infoRepository.findByNameAndStatus(info.getName(),Status.EXIST)!=null){ //说明这个名字已经有人占用了(并且被占用的不在回收站中) return Ret.error(ModifyAndAddResult.DUPLICATE_USERNAME); }else if(!Utils.judge(info.getName())){ //存在中文字符 return Ret.error(ModifyAndAddResult.HAS_CHINESE); }else if(info.getPassword().length()<6){ //密码长度小于6位 return Ret.error(ModifyAndAddResult.SHORT_PASSWORD); }else{ info.setStatus(Status.EXIST); //修改创建时间和修改时间 info.setCreatetime(new Date()); info.setUptime(new Date()); infoRepository.save(info); //条件满足,加入表中 return Ret.success(info); } } } @Override public Ret delete(String name, String password) { Info info = infoRepository.findByNameAndPasswordAndStatus(name,password,Status.EXIST); if(info == null){ return Ret.error(InfoResult.INFO_EMPTY); //没有这条信息 } else{ info.setStatus(Status.NOT_EXIST); //状态设为不存在状态 info.setUptime(new Date()); infoRepository.save(info); return Ret.success(info); } } @Override public Ret login(String name, String password) { Info info = infoRepository.findByNameAndPasswordAndStatus(name,password,Status.EXIST); if(info==null){ if(infoRepository.findByNameAndStatus(name,Status.EXIST)==null){ //表里没这个用户名 return Ret.error(LoginResult.WRONG_USERNAME); } else{ return Ret.error(LoginResult.WRONG_PASSWORD); } }else{ return Ret.success(info); } } @Override public Ret modifyName(String name,String password,String newName) { Info info = infoRepository.findByNameAndPasswordAndStatus(name,password,Status.EXIST); if(info==null){ return Ret.error(InfoResult.INFO_NOT_EXIST); }else if(infoRepository.findByNameAndStatus(newName,Status.EXIST)!=null){ //与add判断相同,判断newName是否重复 return Ret.error(ModifyAndAddResult.DUPLICATE_USERNAME); }else if(!Utils.judge(newName)){ //有中文字符 return Ret.error(ModifyAndAddResult.HAS_CHINESE); }else{ info.setName(newName); info.setUptime(new Date()); infoRepository.save(info); return Ret.success(info); } } @Override public Ret modifyPassword(String name,String password,String newPassword) { Info info = infoRepository.findByNameAndPasswordAndStatus(name,password,Status.EXIST); if(info==null){ return Ret.error(InfoResult.INFO_NOT_EXIST); //数据不存在 }else if(newPassword.length()<6){ //密码没有超过6位 return Ret.error(ModifyAndAddResult.SHORT_PASSWORD); }else{ info.setPassword(newPassword); info.setUptime(new Date()); infoRepository.save(info); return Ret.success(info); } } }
通过自动注入DAO类,我们可以用service层对数据库进行操作(通过调用DAO方法接口的实现类的方法),注意service的返回值也是Ret类,这样的作用是返回不同类的对象,都可以用Ret来进行包括,这样就不用返回Object类了。

浙公网安备 33010602011771号