store(商城项目)Springboot+springmvc+ajax+mybatis(九)

37. 省市区-获取列表-控制器层

关于需要处理的请求:

请求路径:/districts/
请求参数:String parent
请求方式:GET
响应结果:JsonResult<List<District>>
是否拦截:否,不需要登录就可以访问

由于不需要拦截,所以,先在拦截器的配置类InterceptorConfigurer类中添加/district/**到白名单!

先在cn.tedu.store.controller包中创建DistrictController类,继承自BaseController,在类的声明之前添加@RestController@RequestMapping("districts")注解,并在类中声明@Autowired private IDistrictService districtService;业务接口:

/**
 * 处理省/市/区数据相关请求的控制器类
 */
@RestController
@RequestMapping("districts")
public class DistrictController extends BaseController {

    @Autowired
    private IDistrictService districtService;

}

然后,在类中添加处理请求的方法:

// http://localhost:8080/districts/?parent=86
@GetMapping({"", "/"})
public JsonResult<List<District>> getByParent(String parent) {
    // 调用业务对象获取数据
    // 返回OK与数据
}

38. 省市区-获取列表-前端页面

39. 省市区-根据行政代号获取名称-持久层

需要执行的SQL语句大致是:

select name from t_dict_district where code=?

DistrictMapper接口中添加抽象方法:

/**
 * 根据省/市/区的行政代号查询名称
 * @param code 省/市/区的行政代号
 * @return 匹配的省/市/区的名称,如果没有匹配的数据,则返回null
 */
String findNameByCode(String code);

DistrictMapper.xml中配置映射:

<!-- 根据省/市/区的行政代号查询名称 -->
<!-- String findNameByCode(String code) -->
<select id="findNameByCode"
    resultType="java.lang.String">
    SELECT
        name
    FROM
        t_dict_district
    WHERE
        code=#{code}
</select>

DistrictMapperTests中测试:

@Test
public void findNameByCode() {
    String code = "110000";
    String name = mapper.findNameByCode(code);
    System.err.println("name=" + name);
}

40. 省市区-根据行政代号获取名称-业务层

IDistrictService接口中添加:

/**
 * 根据省/市/区的行政代号查询名称
 * @param code 省/市/区的行政代号
 * @return 匹配的省/市/区的名称,如果没有匹配的数据,则返回null
 */
String getNameByCode(String code);

DistrictServiceImpl类中实现以上方法:

@Override
public String getNameByCode(String code) {
    return districtMapper.findNameByCode(code);
}

DistrictServiceTests中测试:

@Test
public void getNameByCode() {
    String code = "110000";
    String name = service.getNameByCode(code);
    System.err.println("name=" + name);
}

41. 收货地址-增加-业务-补

在增加收货地址的业务中,需要补全“根据已知的行政代号获取对应的名称”!

先在AddressServiceImpl中添加处理省市区数据的业务对象:

@Autowired
private IDistrictService districtService;

在插入收货地址数据之前,补充补全数据:

String provinceCode = address.getProvinceCode();
String provinceName = districtService.getNameByCode(provinceCode);
address.setProvinceName(provinceName);
String cityCode = address.getCityCode();
String cityName = districtService.getNameByCode(cityCode);
address.setCityName(cityName);
String areaCode = address.getAreaCode();
String areaName = districtService.getNameByCode(areaCode);
address.setAreaName(areaName);

42. 收货地址-显示列表-持久层

显示某用户的收货地址列表,需要执行的SQL语句大致是:

select * from t_address where uid=? order by is_default desc, modified_time desc

作业:参考“获取全国所有省”的功能,开发至控制器层,通过http://localhost:8080/addresses可以获取当前登录的用户的收货地址列表数据!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭九钦vlog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值