用redis存取三級聯動省市縣
阿新 • • 發佈:2018-12-14
我搜索了一下,發現用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!