收货地址模块技术要点:
1、同步获取自增主键
2、数据绑定的对象绑定
3、越权问题升级巩固
一、新增收货地址
Controller层:
//新建收货地址
@RequestMapping("add.do")
@ResponseBody
public ServerResponse add(HttpSession session,Shipping shipping){
User user = (User)session.getAttribute(Const.CURRENT_USER);
if(user ==null)
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),ResponseCode.NEED_LOGIN.getDesc());
return iShippingService.add(user.getId(),shipping);
}
Service层:
//新建收货地址
public ServerResponse add(Integer userId, Shipping shipping){
shipping.setUserId(userId);
int rowCount = shippingMapper.insert(shipping);
if(rowCount > 0){
Map result = Maps.newHashMap();
result.put("shippingId",shipping.getId());
return ServerResponse.createBySuccess("新建地址成功",result);
}
return ServerResponse.createByErrorMessage("新建地址失败");
}
Mapper.xml:
<insert id="insert" parameterType="com.mmall.pojo.Shipping" useGeneratedKeys="true" keyProperty="id">
insert into mmall_shipping (id, user_id, receiver_name,
receiver_phone, receiver_mobile, receiver_province,
receiver_city, receiver_district, receiver_address,
receiver_zip, create_time, update_time
)
values (#{
id,jdbcType=INTEGER}, #{
userId,jdbcType=INTEGER}, #{
receiverName,jdbcType=VARCHAR},
#{
receiverPhone,jdbcType=VARCHAR}, #{
receiverMobile,jdbcType=VARCHAR}, #{
receiverProvince,jdbcType=VARCHAR},
#{
receiverCity,jdbcType=VARCHAR}, #{
receiverDistrict,jdbcType=VARCHAR}, #{
receiverAddress,jdbcType=VARCHAR},
#{
receiverZip,jdbcType=VARCHAR}, now(), now()
)
</insert>
同步获取自增主键
Mybatis 配置文件 useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。
<insert id="insert"