新增收获地址,默认地址
新增收货地址
1.表
2.entity
package com.cy.store.entity;
/** 收货地址数据的实体类 */
public class Address extends BaseEntity implements Serializable {
private Integer aid;
private Integer uid;
private String name;
private String provinceName;
private String provinceCode;
private String cityName;
private String cityCode;
private String areaName;
private String areaCode;
private String zip;
private String address;
private String phone;
private String tel;
private String tag;
private Integer isDefault;
// Generate: Getter and Setter、Generate hashCode() and equals()、toString()
}
3.持久层
3.1开发顺序
当前收货地址功能模块:先有增加收货地址,点击进行增加,增加完毕以后,返回页面,页面直接从数据库用list读取页面,读取完毕后再进行删改操作
3.2sql语句的规划
增加地址:
insert into t_address () value ()
每个地址不超过20,所以还有用一个count来计数
select count(*) from t_adress where uid = ?
这个是查询uid的个数有多少个的(可以在可视化界面中操作一下)
3.3接口和抽象方法
package com.cy.store.mapper;
import com.cy.store.entity.Address;
public interface AddressMapper {
/**
* 插入受到行数改变
* @param address
* @return
*/
Integer insert(Address address);
/**
* 计数要用到uid
* @param uid
* @return
*/
Integer countByUid(Integer uid);
}
3.4映射接口
<resultMap id="AddressEntityMap" type="com.cy.store.entity.Address">
<id column="aid" property="aid"/>
<result column="province_code" property="provinceCode"/>
<result column="province_name" property="provinceName"/>
<result column="city_code" property="cityCode"/>
<result column="city_name" property="cityName"/>
<result column="area_code" property="areaCode"/>
<result column="area_name" property="areaName"/>
<result column="is_default" property="isDefault"/>
<result column="created_user" property="createdUser"/>
<result column="created_time" property="createdTime"/>
<result column="modified_user" property="modifiedUser"/>
<result column="modified_time" property="modifiedTime"/>
</resultMap>
<insert id="insert" useGeneratedKeys="true" keyProperty="aid">
INSERT INTO t_address (
uid, name, province_name, province_code, city_name, city_code, area_name, area_code, zip,
address, phone, tel,tag, is_default, created_user, created_time, modified_user, modified_time
) VALUES (
#{uid}, #{name}, #{provinceName}, #{provinceCode}, #{cityName}, #{cityCode}, #{areaName},
#{areaCode}, #{zip}, #{address}, #{phone}, #{tel}, #{tag}, #{isDefault}, #{createdUser},
#{createdTime}, #{modifiedUser}, #{modifiedTime}
)
</insert>
<select id="countByUid" resultType="java.lang.Integer">
SELECT
COUNT(*)
FROM
t_address
WHERE
uid=#{uid}
4.业务层
4.1规划异常
1.AddressCountLimitException类来继承ServiceException
这个异常是用户有太多的地址了
2.在执行插入数据时,还可能抛出InsertException异常,此异常无需再次创建。
4.2接口抽象方法
package com.cy.store.service;
import com.cy.store.entity.Address;
public interface IAddressService {
void AddNewAddress(Integer uid, String username, Address address);
}
uid是来标识谁创建的这个地址,因为uid还要进行计数处理,username是用来设计4个参数的
4.3实现类
package com.cy.store.service.Impl;
import com.cy.store.entity.Address;
import com.cy.store.mapper.AddressMapper;
import com.cy.store.service.IAddressService;
import com.cy.store.service.ex.AddressCountLimitException;
import com.cy.store.service.ex.InsertException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
5.控制层
5.1处理异常
else if (e instanceof AddressCountLimitException) {
result.setState(5004);
result.setMessage("用户地址超出上限异常");
}
5.2设计请求
post
json<void>
address,session
5.3编写接口
还要自行测试一下
Address/address_new?name=tmo&phone=1651561
6.前端页面
<script type="text/javascript">
$("#btn-add-new-address").click(function () {
$.ajax({
url:"/Address/address_new",
type:"post",
data:$("#form-add-new-address").serialize(),
dataType:"json",
success:function (json) {
if(json.state==200)
{
alert("新增收获地址成功");
}
else
{
alert("新增收获地址失败");
}
},
error:function (xhr) {
alert("新增收获地址产生未知异常" + xhr);
}
});
})
</script>
新增默认地址
1.持久层
1.1设计sql语句
1.2设计接口
Address findByAid (Integer aid);
/**
* 根据用户的uid来修改收货地址改为非默认值
* @param uid
* @return
*/
Integer UpdateNull(Integer uid);
Integer UpdateDefaultByAid(Integer aid);
1.3编写mapper
<select id="findByAid" resultType="com.cy.store.entity.Address">
select * from t_address where aid=#{aid}
</select>
<update id="UpdateNull">
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>
2.业务层
2.1规划异常
AccessException,从aid中获得address,address中的uid和传入的uid不是一个uid就抛出权限异常
更新异常
AddresssNotFound用户找不到
2.2设计接口
void setDefault(Integer aid,Integer uid );
2.3编写类
3.控制层
3.1处理异常
3.2设计请求
/Address/{id}/set_default
@PathVarible("id")Int aid,HttpSession session
post
JsonResult<Void>
3.3方法定义
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具