1.业务分析
可能存在的异常: 用户在设置的时候,该地址可能同时被管理员删除,抛AddressNotFoundException异常 在设置当前地址为默认之前,将该用户的所有地址都设置成非默认,即is_default设置成为0 根据地址的id设置其字段is_default为1
2.持久层接口及mapper映射
Address selectAddressByAid ( Integer aid) ;
Integer updateNonDefaultAddress ( Integer uid) ;
Integer updateDefaultAddress ( @Param ( "aid" ) Integer aid,
@Param ( "modifiedUser" ) String modifiedUser,
@Param ( "modifiedTime" ) Date modifiedTime) ;
在开发中我遇到了一个问题,updateDefaultAddress接口中使用了多个参数,一开始并未添加@Param注解,该接口的映射文件中的sql语句并不是按照接口参数的顺序使用的,所以会报param not found的错误,所以记住 持久层接口中的参数如果是多个,非对象的, 此时使用@Param注解对其进行添加别名
3.业务层
@Override
public void setDefaultAddress ( Integer uid, Integer aid, String modifiedUser) {
Address address = addressDao. selectAddressByAid ( aid) ;
if ( address == null ) {
throw new AddressNotFoundException ( "当前设置的地址不存在" ) ;
}
addressDao. updateNonDefaultAddress ( uid) ;
addressDao. updateDefaultAddress ( aid, modifiedUser, new Date ( ) ) ;
}
4.控制层
@RequestMapping ( value = "{aid}/setDefaultAddress" , method = RequestMethod . POST)
public JsonResult < Void > setDefaultAddressController ( @PathVariable ( "aid" ) Integer aid, HttpSession session) {
iAddressService. setDefaultAddress (
getUidFromSession ( session) ,
aid,
getUsernameFromSession ( session) ) ;
return new JsonResult < > ( OK) ;
}