【基于SprintBoot+Mybatis+Mysql】电脑商城项目之设置默认收货地址及删除收货地址

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之设置默认收货地址及删除收货地址

🧸安清h:个人主页 

   🎥个人专栏:【Spring篇】【计算机网络】【Mybatis篇】

🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。


目录

🚀设置默认收货地址- 持久层

✨1.1规划SQL语句

 ✨1.2设计抽象方法

✨1.3配置SQL映射 

🚀设置默认收货地址- 业务层

✨2.1异常规划

✨2.2抽象方法

✨2.3实现抽象方法 

🚀设置默认收货地址- 控制层

✨3.1处理异常

✨3.2设计请求

✨3.3处理请求 

🚀设置默认收货地址- 前端页面

🎯1.删除收货地址-持久层

✨1.1规划SQL语句

✨1.2设计接口和抽象方法

✨1.3完成映射

🎯2.删除收货地址-业务层

✨2.1规划异常

✨2.2抽象方法的设计

 ✨2.3实现抽象方法

🎯3.删除收货地址-控制层

🎯4.删除收货地址-前端页面


🚀设置默认收货地址- 持久层

✨1.1规划SQL语句

1.检测当前用户想设置为默认收货地址的这条数据是否存在。

select * from t_address where aid=?

2.在修改 用户的默认地址之前,先将所有的收货地址设置为非默认。

update t_address set is_default=0 where uid=?

3.将用户当前选中的这条记录设置为默认的收货地址。 

update t_address set is_default=1,modified_user=?,modified_time=? where aid=?

 ✨1.2设计抽象方法

在AddressMapper接口中来定义声明。

    /**
     * 根据aid查询收货地址数据
     * @param aid 收货地址id
     * @return 收货地址数据,如果没有找到返回null
     */
    Address findByAid(Integer aid);

    /**
     * 根据用户的uid来修改用户的收货地址设置为非默认
     * @param uid 用户的id值
     * @return 受影响的行数
     */
    Integer updateNonDefault(Integer uid);
    
    Integer updateDefaultByAid(@Param("aid") Integer aid,
                        @Param("modifiedUser") String modifiedUser,
                        @Param("modifiedTime") Date modifiedTime);

✨1.3配置SQL映射 

在AddressMapper.xml文件中配置。

    <select id="findByAid" resultMap="AddressEntityMap">
        select * from t_address where aid=#{aid}
    </select>

    <update id="updateNonDefault">
        update t_address set is_default=0 where uid=#{uid}
    </update>

    <update id="updateDefaultByAid">
        update t_address set is_default=1,modified_user=#{modifiedUser},modified_time=#{modifiedTime}
        where aid=#{aid}
    </update>

 在单元测试方法中进行测试。

    @Test
    public void updateNonDefault(){
        addressMapper.updateNonDefault(6);
    }

    @Test
    public void updateDefaultByAid(){
        addressMapper.updateDefaultByAid(1,"与水",new Date());

    }

    @Test
    public void findByAid(){
        System.out.println(addressMapper.findByAid(2));
    }

🚀设置默认收货地址- 业务层

✨2.1异常规划

1.在执行更新时产生未知的UpdateException异常。已经创建无需重复创建。

2.访问的数据不是当前用户登录的收货地址的数据,非法访问:A***essDeniedException异常。

//非法访问的异常
public class A***essDeniedException extends ServiceException {
    public A***essDeniedException() {
        super();
    }

    public A***essDeniedException(String message) {
        super(message);
    }

    public A***essDeniedException(String message, Throwable cause) {
        super(message, cause);
    }

    public A***essDeniedException(Throwable cause) {
        super(cause);
    }

    protected A***essDeniedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

3.收货地址有可能不存在的异常:AddressNotFoundException异常。

public class AddressNotFoundException extends ServiceException{
    public AddressNotFoundException() {
        super();
    }

    public AddressNotFoundException(String message) {
        super(message);
    }

    public AddressNotFoundException(String message, Throwable cause) {
        super(message, cause);
    }

    public AddressNotFoundException(Throwable cause) {
        super(cause);
    }

    protected AddressNotFoundException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
        super(message, cause, enableSuppression, writableStackTrace);
    }
}

✨2.2抽象方法

 在接口中编写抽象方法。

    /**
     * 修改某个用户的某条收货地址为默认收货地址
     * @param aid 收货地址的id
     * @param uid 用户的id
     * @param username 修改执行的人
     */
    void setDefault(Integer aid,Integer uid,String username);

✨2.3实现抽象方法 

在AddressService

转载请说明出处内容投诉
CSS教程网 » 【基于SprintBoot+Mybatis+Mysql】电脑商城项目之设置默认收货地址及删除收货地址

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买