ssm redis 数据字典在J2EE中的多种应用与实现
数据字典在项目中是不可缺少的“基础设施”,关于数据字典如何设计如何实现,今天抽空讲一下吧
先看一下表设计:
通过自定义标签来实现页面的渲染:
public class DataDictValueTag extends SimpleTagSupport { private String typeCode; private String ddKey; StringWriter sw = new StringWriter(); public void doTag() throws JspException, IOException {
if (StringUtils.isNotEmpty(typeCode) && StringUtils.isNotEmpty(ddKey)) { DataDictService ddService = (DataDictService)SpringContextUtil.getBean(DataDictService.class);
String ddValue = ddService.queryDataDictValueByCodeKey(typeCode, ddKey); JspWriter out = getJspContext().getOut();
out.println(ddValue);
} else {
getJspBody().invoke(sw);
getJspContext().getOut().println(sw.toString());
}
} public String getTypeCode() {
return typeCode;
} public void setTypeCode(String typeCode) {
this.typeCode = typeCode;
} public String getDdKey() {
return ddKey;
} public void setDdKey(String ddKey) {
this.ddKey = ddKey;
} }
再看一下service,根据字典码和数据字典key来获取具体的值:
需要注意的是数据字典属于静态数据,要放到redis中
@Override
public String queryDataDictValueByCodeKey(String typeCode, String ddKey) {
String redisKey = "redis_datadict:" + typeCode + ":" + ddKey;
// 从缓存中获取数据字典的值,如果没有该值,则从数据库中获取,最后再存入redis中
String redisDdvalue = jedis.get(redisKey);
if (StringUtils.isNotEmpty(redisDdvalue)) {
return redisDdvalue;
} DataDictExample dataDictExample = new DataDictExample();
Criteria dataDictCriteria = dataDictExample.createCriteria();
dataDictCriteria.andTypeCodeEqualTo(typeCode);
dataDictCriteria.andDdkeyEqualTo(ddKey);
dataDictCriteria.andIsShowEqualTo(YesOrNo.YES.value);
List<DataDict> list = dataDictMapper.selectByExample(dataDictExample);
if (list != null && list.size() > 0) {
DataDict dd = (DataDict)list.get(0); String ddvalue = dd.getDdvalue();
// 在Redis中设置数据字典的值
jedis.set(redisKey, ddvalue); return ddvalue;
} return "";
}
再JSP中的使用:
<label>
<input type="radio" name="sex" class="icheck" value="0" /> <dataDict:dataDictValue typeCode="sex" ddKey="0"/>
</label> <label>
<input type="radio" name="sex" class="icheck" value="1" /> <dataDict:dataDictValue typeCode="sex" ddKey="1"/>
</label> <label>
<input type="radio" name="sex" class="icheck" value="2" checked="checked"/> <dataDict:dataDictValue typeCode="sex" ddKey="2"/>
</label>
如果是用jqgrid类似这样的js插件来渲染的话,那么需要再额外自定义api接口供js或者其他应用调用:
{ name: 'sex', index: 'sex', width: 20, sortable: false,
formatter:function(cellvalue, options, rowObject) { var typeCode = "sex";
var ddkey = cellvalue;
var ddvalue = ""; $.ajax({
url: $("#hdnContextPath").val() + "/dataDict/queryDataDictValue.action",
type: "POST",
async: false,
data: {"typeCode": typeCode, "ddkey": ddkey},
success: function(data) {
if(data.status == 200 && data.msg == "OK") {
ddvalue = data.data;
} else {
console.log(JSON.stringify(data));
}
},
error: function (response, ajaxOptions, thrownError) {
Error.displayError(response, ajaxOptions, thrownError);
}
}); return ddvalue}
},
基本上就是这些用法了,具体我录制了一些视频,代码也上传到了github
http://www.itzixi.com/course/detail.shtml?courseId=17092078Y3009WX4
https://github.com/leechenxiang/LeeCX
ssm redis 数据字典在J2EE中的多种应用与实现的更多相关文章
- SSM(七)在JavaWeb应用中使用Redis
前言 先来看一张效果图: 作用就是在每次查询接口的时候首先判断Redis中是否有缓存,有的话就读取,没有就查询数据库并保存到Redis中,下次再查询的话就会直接从缓存中读取了.Redis中的结果:之后 ...
- Redis在WEB开发中的应用与实践
Redis在WEB开发中的应用与实践 一.Redis概述: Redis是一个功能强大.性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL.但事实上Redis除了作为NoSQL数据库使用之 ...
- 单点登录与消息队列以及在J2EE中的实现方案
前言 这次为大家简单介绍两个在WEB开发中经常使用的概念——单点登录和消息队列以及具体到J2EE中的一些实现方案.本文原创性的工作比较少,主要是一些总结概括和自己的理解. 单点登录SSO SSO的业务 ...
- 从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建
从零开始搭建框架SSM+Redis+Mysql(二)之MAVEN项目搭建 废话不说,直接撸步骤!!! 1.创建主项目:ncc-parent 选择maven创建项目,注意在创建项目中,packing选择 ...
- ssm+redis整合(通过cache方式)
这几天的研究ssm redis 终于进入主题了,今天参考了网上一些文章搭建了一下ssm+redis整合,特别记录下来以便以后可以查询使用,有什么不足请大牛们提点 项目架构 1.pom.xml < ...
- JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(2):SSM+Redis概念理解
一.SSM+Redis的结构图 在Java互联网中,以Spring+SpringMVC+MyBatis(SSM)作为主流框架,SSM+Redis的结构图如下: 二.下面介绍它们各自承担的功能: 1.S ...
- redis入门指南书中概要
一.简介 1.redis是一个开源的.高性能的.基于键值对的缓存和存储系统,通过提供多种键值数据类型适应不同场景下的缓存和存储需求,同时redis高级功能能胜任消息队列.任务队列等不同角色. 2.内存 ...
- redis在asp.net 中的应用
1.redis介绍 Nosql数据库作为关系型数据库的补充,在互联网公司已经得到广泛的运用.redis便是其中的代表之一,redis是一种(key,value)基于内存的数据库,并支持多种数据结构,如 ...
- Redis(十四)Redis 在Java Web 中的应用
在传统的 Java Web 项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面. 由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般管理系统中,由于不存在高 ...
随机推荐
- JavaWeb开发之普通图片验证码生成技术与算术表达式验证码生成技术
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6134649.html 另:算术验证码生成的JSP.Servlet实现均已移植github:https:/ ...
- Java IO的应用之实现大文件复制
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827481.html 用IO进行文件复制,实质就是用FileInputStream链接要复制的文件,按一定规 ...
- 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入
终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...
- 2、传统的线程互斥synchronized
synchronized使用之基本原则: synchronized可以锁方法,也可以锁代码片段,但要实现互斥的基本就是在想要互斥的代码上加”同一把锁“,也就是同一个对象,也就是用==判断等于true的 ...
- Tomcat 访问Manager APP报403错误
已在conf/tomcat-users.xml中添加用户信息 但是通过外网访问该tomcat的Manager App报403错误 原因是因为tomcat进行了ip限制,导致虚拟机中能够正常进入mana ...
- HttpClient库设置超时
HttpClient库API跟Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样. 3.X是正常的Java语法 HttpCli ...
- 利用 WireShark 深入调试网络请求
来源:伯乐在线 - bestswifter 如有好文章投稿,请点击 → 这里了解详情 背景 最近发现我们产品在打开广告链接(Webview)时有一定概率会非常慢,白屏时间超过 10s,追查广告的过程中 ...
- ubuntu安装wkhtmltopdf
下载安装wkhtmltox系统环境 http://wkhtmltopdf.org/downloads.html wget https://bitbucket.org/wkhtmltopdf/wkhtm ...
- SpringBoot配置属性之MVC
SpringBoot配置属性系列 SpringBoot配置属性之MVC SpringBoot配置属性之Server SpringBoot配置属性之DataSource SpringBoot配置属性之N ...
- eclipse插件安装的四种方法
Eclipse插件的安装方法 1.在eclipse的主目录(ECLIPSE_HOME,比如在我的机器上安装的目录是:D:\eclipse)有一个plugins的目录,这种方法的插件安装非常简单,只要将 ...