最近做项目时碰到需要选取省市县填充,本来前端实现这个功能是非常方便的,利用vue的组件库就可以实现,但是我们项目中台不好再引入这些组件库,所以就让后端实现!
网上找了一些数据,但是都不是最新的行政区划数据,于是我就在我国的官方网站上下载了数据(行政区划官网上并没有*省的资料,我从vue官方文档中拿的相关数据),存到mysql库中,实现省市县三级查询。
数据库实例
三张表分别存放省市区,很明了,查询也方便
sql文件
存到百度云盘里了,有需要可自取,三个sql文件分别对应省市区
链接:https://pan.baidu.com/s/136W4PtvQ6llA51RYePoieA
提取码:dnvc
代码查询
建议使用mybatis查询,并且用collections标签会好很多
实例:
<resultMap id="baseResultMap" type="utry.scrm.entity.Region">
<result property="id" column="province_id" jdbcType="VARCHAR"/>
<result property="regionName" column="province" jdbcType="VARCHAR"/>
<collection property="list" ofType="utry.scrm.entity.Region">
<result property="id" column="city_id" jdbcType="VARCHAR"/>
<result property="regionName" column="city" jdbcType="VARCHAR"/>
<collection property="list" ofType="utry.scrm.entity.Area">
<result property="id" column="area_id" jdbcType="VARCHAR"/>
<result property="regionName" column="area" jdbcType="VARCHAR"/>
</collection>
</collection>
</resultMap>
<select id="自己的dao层方法" resultMap="baseResultMap">
SELECT
a.province_id,
a.province,
b.city_id,
b.city,
c.area_id,
c.area
FROM
provinces a
LEFT JOIN cities b ON a.province_id = b.province_id
LEFT JOIN areas c ON b.city_id = c.city_id
</select>