springboot+mybatis+thymleft 省份的三级联动

第一步 :创建Spring-boot项目:

 

  第二步选择项目所需要的jar包:

  第三步: 完成项目创建之后,配置 application.yml文件 (我是将application.properties 重构成 application.yml  两者功能一样的 )

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ctiy?serverTimezone=Asia/Shanghai
    username: root
    password: root

server:
  port: 8081

mybatis:
  mapper-Locations: classpath:mapper/*Mapper.xml

  thymeleaf:
    mode: HTML5
    cache: false
    suffix: .html
    prefix: classpath:/templates/

logging:
  level:
    com.cskt.springbootdemo4.mapper: trace

 第四步:创建项目 所需要的 pojo层 dao(mapper)层  service层 以及 conterller层 

 controller层:

package com.cskt.springbootdemo4.controller;

import com.cskt.springbootdemo4.service.proservice;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.cskt.springbootdemo4.pojo.City;
import com.cskt.springbootdemo4.pojo.Province;
import com.cskt.springbootdemo4.pojo.Town;

import java.util.List;


@RestController
public class procontroller {
    @Autowired
    private proservice ps;

    @GetMapping("findall")
    public List<Province> findall(){
        List<Province> list=ps.findall();
        return list;
    }

    @GetMapping("findbypid")
    public List<City> findBypid(@RequestParam("pid") Integer pcode){
        List<City> list=ps.findallBypid(pcode);
        return list;
    }

    @GetMapping("findbycid")
    public List<Town> findBycid(@RequestParam("cid") Integer ccode){
        List<Town> list=ps.findallBycid(ccode);
        return list;
    }

}

mapper层:

package com.cskt.springbootdemo4.mapper;

import com.cskt.springbootdemo4.pojo.City;
import com.cskt.springbootdemo4.pojo.Province;
import com.cskt.springbootdemo4.pojo.Town;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
@Mapper
public interface proMapper {
    //查询所有省份
    public List<Province> findall();
    //根据省份code查找市级
    public List<City> findallBypid(int pcode);
    //根据市级code查找区
    public List<Town>  findallBycid(int ccode);

}

ProMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cskt.springbootdemo4.mapper.proMapper">
    <resultMap type="com.cskt.springbootdemo4.pojo.City" id="pp">
        <id column="id" property="id" />
        <result column="code" property="code" />
        <result column="name" property="name" />
        <result column="provinceCode" property="provinceCode" />
        <association property="p" javaType="com.cskt.springbootdemo4.pojo.Province">
            <id column="id" property="id" />
            <result column="code" property="code" />
            <result column="name" property="name" />
        </association>
    </resultMap>
    <resultMap type="com.cskt.springbootdemo4.pojo.Town" id="t">
        <id column="id" property="id" />
        <result column="code" property="code" />
        <result column="name" property="name" />
        <result column="cityCode" property="cityCode" />
        <association property="city" javaType="com.cskt.springbootdemo4.pojo.City">
            <id column="id" property="id" />
            <result column="code" property="code" />
            <result column="name" property="name" />
            <result column="provinceCode" property="provinceCode" />
        </association>
    </resultMap>
    <select id="findall" resultType="com.cskt.springbootdemo4.pojo.Province">
        select * from t_address_province
    </select>
    <select id="findallBypid" resultMap="pp">
        SELECT * from t_address_city cc JOIN t_address_province p on p.`code`=cc.provinceCode where cc.provinceCode=#{pid}
    </select>
    <select id="findallBycid" resultMap="t">
        SELECT * from t_address_town t JOIN t_address_city cc on t.cityCode =cc.`code`	where t.cityCode=#{cid}
    </select>
</mapper>

pojo:  City类

package com.cskt.springbootdemo4.pojo;

import lombok.Data;


@Data
public class City {
    private int id;

    private String code;

    private String name;

    private String provinceCode;

    private Province p;
}

 Province类

package com.cskt.springbootdemo4.pojo;

import lombok.Data;


@Data
public class Province {
    private int id;

    private String code;

    private String name;
}

Town类

package com.cskt.springbootdemo4.pojo;

import lombok.Data;


@Data
public class Town {
    private int id;

    private String code;

    private String name;

    private String cityCode;

    private City city;
}

service层

ProvinceService:

package com.cskt.springbootdemo4.service;

import com.cskt.springbootdemo4.pojo.City;
import com.cskt.springbootdemo4.pojo.Province;
import com.cskt.springbootdemo4.pojo.Town;

import java.util.List;

public interface proservice {
    //查询所有省份
    public List<Province> findall();
    //根据省份code查找市级
    public List<City> findallBypid(int pcode);
    //根据市级code查找区
    public List<Town>  findallBycid(int ccode);

}

ProvinceServiceImpl:

package com.cskt.springbootdemo4.service.impl;

import com.cskt.springbootdemo4.mapper.proMapper;
import com.cskt.springbootdemo4.pojo.Town;
import com.cskt.springbootdemo4.service.proservice;
import com.cskt.springbootdemo4.pojo.City;
import com.cskt.springbootdemo4.pojo.Province;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;


@Service
public class proserviceimpl implements proservice{
    @Autowired
    private proMapper pm;
    @Override
    public List<Province> findall() {
        return pm.findall();
    }

    @Override
    public List<City> findallBypid(int pcode) {
        return pm.findallBypid(pcode);
    }

    @Override
    public List<Town> findallBycid(int ccode) {
        return pm.findallBycid(ccode);
    }

}

utill(工具类)

PageController
package com.cskt.springbootdemo4.util;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PageController {
   @RequestMapping("/{page}.html")
   public String toPage(@PathVariable("page") String page){
       return page;
   }
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>三级联动</title>
</head>
<body>
<div align="center">
    <h1>三级联动查询 省 市 区</h1>
<form action="">

    <select class="a"></select>
    <select class="b"></select>
    <select class="c"></select>
</form>
</div>
<script src="/jquery-3.4.1.min.js"></script>
<script>
    $(function () {
        $.getJSON('http://localhost:8081/findall', '', function(data) {
            for ( var a = 0; a < data.length; a++) {
                var b = "<option value="+data[a].code+">" + data[a].name+ "</option>";
                $(".a").append(b);
            };
        });
        $(".a").blur(function() {
            var z = $(this).val();
            alert(z)
            $.getJSON('http://localhost:8081/findbypid', 'pid=' + z, function(data) {
                console.log(data)
                $(".b").children().remove();
                $(".c").children().remove();
                for ( var a = 0; a < data.length; a++) {
                    var b = "<option value="+data[a].code+">"+ data[a].name + "</option>";
                    $(".b").append(b);
                }
            });
        });
        $(".b").blur(function() {
            var c = $(this).val();
            $.getJSON('http://localhost:8081/findbycid', 'cid=' + c, function(data) {
                console.log(data)
                $(".c").children().remove();
                for ( var a = 0; a < data.length; a++) {
                    var city = "<option value="+data[a].code+">"+ data[a].name + "</option>";
                    $(".c").append(city);
                }
            });
        });
    })
</script>
</body>
</html>

展示页面:

 

 

 

数据库网站:数据库技术:省市县三级联动的SQL语句-猴子技术宅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值