用redis存取三级联动省市县

我搜索了一下,发现用redis存取三级联动的内容很少,所以就自己写了一份。

这里使用单机版的redis进行数据的存取的,后台用了springmvc,前台用的bootstrap,代码准备的比较全,所以有点多,望众知:

配置文件   applicationContext-redis.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">

    <!--将redis对象交给spring容器管理-->
    <!--注册单机版的redis,创建jedisPool,需要通过构造方法注入port和host-->
    <!--连接redis的单机版-->
    <!--注册单机版的实现类-->
    <bean id="jedisClientPool" class="com.buba.witkey.redis.impl.JedisClientPool">
        <property name="jedisPool" ref="jedisPool"/>

    </bean>
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
        <constructor-arg name="host" value="192.168.43.185" />
        <constructor-arg name="port" value="7111"/>
    </bean>
    <!--单机和集群只能有一个存在-->
    
</beans>

创建如下目录结构:

JedisClient:

package com.buba.witkey.redis;

public interface JedisClient {

    String set(String key, String value);
    String get(String key);
    Boolean exists(String key);
    Long expire(String key, int seconds);
    Long ttl(String key);
    Long incr(String key);
    Long hset(String key, String field, String value);
    String hget(String key, String field);
    Long hdel(String key, String... field);
}

JedisClientCluster:

package com.buba.witkey.redis.impl;

import com.buba.witkey.redis.JedisClient;
import redis.clients.jedis.JedisCluster;
import javax.annotation.Resource;
public class JedisClientCluster implements JedisClient {
    @Resource
    private JedisCluster jedisCluster;
    public JedisCluster getJedisCluster() {
        return jedisCluster;
    }
    public void setJedisCluster(JedisCluster jedisCluster) {
        this.jedisCluster = jedisCluster;
    }
    @Override
    public String set(String key, String value) {
        return jedisCluster.set(key, value);
    }
    @Override
    public String get(String key) {
        return jedisCluster.get(key);
    }
    @Override
    public Boolean exists(String key) {
        return jedisCluster.exists(key);
    }
    @Override
    public Long expire(String key, int seconds) {
        return jedisCluster.expire(key, seconds);
    }
    @Override
    public Long ttl(String key) {
        return jedisCluster.ttl(key);
    }
    @Override
    public Long incr(String key) {
        return jedisCluster.incr(key);
    }
    @Override
    public Long hset(String key, String field, String value) {
        return jedisCluster.hset(key, field, value);
    }
    @Override
    public String hget(String key, String field) {
        return jedisCluster.hget(key, field);
    }
    @Override
    public Long hdel(String key, String... field) {
        return jedisCluster.hdel(key, field);
    }
}

JedisClientPool:

package com.buba.witkey.redis.impl;
import com.buba.witkey.redis.JedisClient;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import javax.annotation.Resource;
public class JedisClientPool implements JedisClient {
    @Resource
    private JedisPool jedisPool;
    public JedisPool getJedisPool() {
        return jedisPool;
    }
    public void setJedisPool(JedisPool jedisPool) {
        this.jedisPool = jedisPool;
    }
    @Override
    public String set(String key, String value) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.set(key,value);
        jedis.close();
        return result;
    }
    @Override
    public String get(String key) {
        return null;
    }
    @Override
    public Boolean exists(String key) {
        return null;
    }
    @Override
    public Long expire(String key, int seconds) {
        return null;
    }
    @Override
    public Long ttl(String key) {
        return null;
    }
    @Override
    public Long incr(String key) {
        return null;
    }
    @Override
    public Long hset(String key, String field, String value) {
        Jedis jedis = jedisPool.getResource();
        Long result = jedis.hset(key,field,value);
        jedis.close();
        return result;
    }
    @Override
    public String hget(String key, String field) {
        Jedis jedis = jedisPool.getResource();
        String result = jedis.hget(key,field);
        jedis.close();
        return result;
    }
    @Override
    public Long hdel(String key, String... field) {
        return null;
    }
}

 后台代码实现:

UserCompleteServiceImpl:

package com.buba.witkey.serviceImpl;

import com.alibaba.fastjson.JSONObject;
import com.buba.witkey.mapper.UserCompleteMapper;
import com.buba.witkey.pojo.Area;
import com.buba.witkey.pojo.City;
import com.buba.witkey.pojo.Province;
import com.buba.witkey.pojo.UserComplete;
import com.buba.witkey.redis.JedisClient;
import com.buba.witkey.service.UserCompleteService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class UserCompleteServiceImpl implements UserCompleteService {
    @Resource
    private UserCompleteMapper userCompleteMapper;
    @Resource
    private JedisClient jedisClient;

    @Override
    public List<Province> queryProvince() {
        String province = jedisClient.get("province");

        List<Province> list1 = null;
        if(province!=null&&!province.equals("")){
            list1=JSONObject.parseArray(province,Province.class);
            return list1;
        }
        list1 = userCompleteMapper.queryProvince();
        String s = JSONObject.toJSONString(list1);
        jedisClient.set("province",s);
        return list1;
    }

    @Override
    public List<City> queryCity(String provinceid) {
        List<City> list2 = null;
        String ci = jedisClient.hget("city",provinceid);
        if(ci!=null&&!ci.equals("")){
            list2 = JSONObject.parseArray(ci, City.class);
            return list2;
        }
        list2 = userCompleteMapper.queryCity(provinceid);
        jedisClient.hset("city",provinceid,JSONObject.toJSONString(list2));
        return list2;
    }

    @Override
    public List<Area> queryArea(String cityid) {
        List<Area> list3 = null;
        String s = jedisClient.hget("area",cityid);
        if(s!=null&&!s.equals("")){
            list3 = JSONObject.parseArray(s, Area.class);
            return list3;
        }
        list3 = userCompleteMapper.queryArea(cityid);
        jedisClient.hset("area",cityid,JSONObject.toJSONString(list3));
        return list3;
    }
}

 userCompleteMapper.xml:

<select id="queryProvince" resultType="com.buba.witkey.pojo.Province">
        select provinceid,province from hat_province;
    </select>
    <select id="queryCity" resultType="com.buba.witkey.pojo.City">
        select cityid,city from hat_city where father=#{provinceid}
    </select>

    <select id="queryArea" resultType="com.buba.witkey.pojo.Area">
        select areaid,area from hat_area where father=#{cityid};
    </select>

UserCompleteController:

@RequestMapping("/queryProvince")
    @ResponseBody
    public List<Province> queryProvince(){
        List<Province> list1 = userCompleteService.queryProvince();

        return list1;
    }
    @RequestMapping("/queryCity")
    @ResponseBody
    public List<City> queryCity(String provinceid){
        List<City> list2 = userCompleteService.queryCity(provinceid);
        return list2;
    }
    @RequestMapping("/queryArea")
    @ResponseBody
    public List<Area> queryArea(String cityid){
        List<Area> list3 = userCompleteService.queryArea(cityid);
        return list3;
    }

前台代码:

html:

<div class="row">
   <div class="col-xs-2">
      <label class="control-label">所在地:</label>
   </div>
   <div class="col-xs-5 updateP1">
      <input type="hidden" name="provinceName">
      <select style="width:130px" id="province" name="provinceCode" onchange="getCity()">
      </select>
      <input type="hidden" name="cityName">
      <select style="width:130px" id="city" name="cityCode" onchange="getArea()">
      </select>
      <input type="hidden" name="areaName">
      <select style=" width:130px" id="area" name="areaCode">
      </select>
   </div>
</div>

js:

$(function(){
        $.ajax({
            url:"${pageContext.request.contextPath }/corporation/queryProvince",
            dataType:"json",
            type:"post",
            data:"",
            success:function(data){
                var provinceid="";
                var province="";
                $(data).each(function(a,b){
                    if(b.provinceid){
                        provinceid=b.provinceid;
                    }
                    if(b.province){
                        province=b.province;
                    }
                    $("#province").append("<option value='"+provinceid+"'>"+province+"</option>");
                })
            }
        })
    })

function getCity(){
        var provinceid=$("#province option:selected").val();
        $.ajax({
            url:"${pageContext.request.contextPath }/corporation/queryCity",
            dataType:"json",
            type:"post",
            data:{"provinceid":provinceid},
            success:function(data){
                $("#city").html("<option></option>");
                $("#area").html("<option></option>");
                var cityid="";
                var city="";
                $(data).each(function(a,b){
                    if(b.cityid){
                        cityid=b.cityid;
                    }
                    if(b.city){
                        city=b.city;
                    }
                    $("#city").append("<option value='"+cityid+"'>"+city+"</option>");
                });
            }
        });
    }

    function getArea(){
        var cityid=$("#city option:selected").val();
        $.ajax({
            url:"${pageContext.request.contextPath }/corporation/queryArea",
            dataType:"json",
            type:"post",
            data:{"cityid":cityid},
            success:function(data){
                $("#area").html("<option></option>");
                var areaid="";
                var area="";
                $(data).each(function(a,b){
                    if(b.areaid){
                        areaid=b.areaid;
                    }
                    if(b.area){
                        area=b.area;
                    }
                    $("#area").append("<option value='"+areaid+"'>"+area+"</option>");
                });
            }
        })
    }

over!

猜你喜欢

转载自blog.csdn.net/qq_43154385/article/details/84916963
今日推荐