一、数据准备
①数据获取:获取省市数据以及建表和插入表数据语句
二、实现编码
①效果图示:
②项目目录:
③代码实现:
controller:(核心)
CasCadeController
package com.cfay.controller;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cfay.pojo.City;
import com.cfay.pojo.Province;
import com.cfay.service.CityService;
import com.cfay.service.ProvinceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.List;
@Controller
public class CasCadeController {
@Autowired
private ProvinceService provinceService;
@Autowired
private CityService cityService;
//获取省份信息
@GetMapping("/main")
public String toIndex(Model model, HttpSession session){
String proListSession = (String) session.getAttribute("proList");
//省份数据已经有了
if(proListSession != null && proListSession.length() != 0) {
model.addAttribute("proList",proListSession);
System.out.println("已存在省份信息");
}else{
//还没有省份数据
List<Province> proList = provinceService.list();
String strProList = JSON.toJSONString(proList);
session.setAttribute("proList",strProList);
model.addAttribute("proList",strProList);
}
return "main";
}
//获取省份对应的城市信息
@GetMapping("/getCityMessage")
@ResponseBody
public String getCityMessage(String cityKey){
//建议:这里可以把已经查出来的城市保存在session中,然后查询的时候先判断是否有这个数据,有的话,就直接从session中获取,没有的话再去查数据库,可参考上面的方式实现
City city = new City();
city.setPCode(cityKey);
List<City> cityList = cityService.list(Wrappers.query(city));
return JSON.toJSONString(cityList);
}
}
Dao:
CityDao
package com.cfay.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cfay.pojo.City;
public interface CityDao extends BaseMapper<City> {
}
ProvinceDao
package com.cfay.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cfay.pojo.Province;
public interface ProvinceDao extends BaseMapper<Province>