十一、设置默认收货地址
1 持久层
-
规划SQL语句
//检查用户要设置的默认地址的这条数据是否存在 select * from t_address where aid=#{aid} //把所有地址的is_default的默认值设置为0 update t_address set is_default=0 where uid=#{uid} //把用户选中的收货地址的默认值设置为1 update t_address set is_default=1 where aid=#{aid}
-
设计接口和抽象方法
/** * 检查用户要设置的默认地址的这条数据是否存在 * @param aid 收货地址id * @return 返回搜索到的数据,不存在返回null */ Address getAddressByAid(Integer aid); /** * 把所有地址的is_default的默认值设置为0 * @param uid 用户id * @return 返回受影响的行数 */ Integer updateDefaultByUid(Integer uid); /** * 把用户选中的收货地址的默认值设置为1 * @param aid 收货地址id * @return 返回受影响的行数 */ Integer updateDefaultByAid(Integer aid);
-
编写xml映射文件
<select id="getAddressByAid" resultMap="AddressEntity"> select * from t_address where aid=#{aid} </select> <update id="updateDefaultByUid"> update t_address set is_default=0 where uid=#{uid} </update> <update id="updateDefaultByAid"> update t_address set is_default=1 where aid=#{aid} </update>
-
测试
@Test public void getAid(){ System.out.println(addressMapper.getAddressByAid(6)); } @Test public void updateUid(){ System.out.println(addressMapper.updateDefaultByUid(7)); } @Test public void updateAid(){ addressMapper.updateDefaultByAid(7); }
2 业务层
-
异常规划:更新时发生未知异常UpdateException;用户收货地址数据不存在AddressNotFoundException
-
设计接口和抽象方法
void setDefault(Integer aid ,Integer uid,String username);
-
实现接口和抽象方法
@Override public void setDefault(Integer aid, Integer uid, String username) { Address row = addressMapper.getAddressByAid(aid); if (row == null){ throw new AddressNotFoundException("收货地址数据不存在"); } addressMapper.updateDefaultByUid(uid); Integer integer = addressMapper.updateDefaultByAid(aid); if (integer != 1){ throw new UpdateException("设置默认地址时发生未知异常"); } }
-
测试
@Test public void updateDefault(){ addressService.setDefault(5,7,"zhou"); }
3 控制层
-
异常处理:在BaseController中统一处理异常
-
设计请求
请求路径:/addres/{aid}/set_default 请求类型:get 请求数据:@PathVariable("aid") Integer aid,HttpSession session 响应类型:JsonResult<Void>
-
实现请求
@RequestMapping("{aid}/set_default") public JsonResult<Void> setDefault(@PathVariable("aid") Integer aid, HttpSession session){ addressService