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 项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面. 由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般管理系统中,由于不存在高 ...
随机推荐
- Objecttive-C各种问题
1.invalid argument type 'void' to unary expression @try{ if (![mJQFMDB open]) { NSLog(@"Could n ...
- oracle12c安装报错:PRVF-0002的解决方法
出错信息: 安装oracle12c, ./runInstaller 启动图形化报错 PRVF-0002 : Could not retrieve local nodename. 原因: 找不到主机名的 ...
- mysql统计函数
数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个 ...
- django之创建第6个项目-过滤器
1.views.PY # Create your views here. #coding:utf-8 from django.http import HttpResponse import datet ...
- Spring框架使用(控制反转,依赖注入,面向切面AOP)
参见:http://blog.csdn.net/fei641327936/article/details/52015121 Mybatis: 实现IOC的轻量级的一个Bean的容器 Inversion ...
- Spring Cloud开发实践 - 02 - Eureka服务和接口定义
服务注册 EurekaServer Eureka服务模块只有三个文件, 分别是pom.xml, application.yml 和 EurekaServerApplication.java, 内容如下 ...
- poj 2059 单调栈
题意:求柱状图中最大矩形面积. 单调栈:顾名思义就是栈内元素单调递增的栈. 每次插入数据来维护这个栈,假设当前须要插入的数据小于栈顶的元素,那就一直弹出栈顶的元素.直到满足当前须要插入的元素大于栈顶元 ...
- Linux经常使用命令-权限管理命令-其它权限管理命令
命令名称:chown 英文: change file ownership 命令所在路径:/bin/chown 语法:chown [用户][文件或者文件夹] 功能描写叙述:改变文件或者文件夹的全部者 范 ...
- onActivityResult 传递数据
onActivityResult 传递数据 http://www.cnblogs.com/sipher/articles/2435078.html 如下图所示.当菜单项变多时,出现了垂直的滚动条,选项 ...
- MATLAB R2018a 输入中文却显示方框问号的问题
[问题] 安装完成软件后,我把编辑区字体重设为 consolas : 就会出现 输入中文注释却没办法正常显示的问题: [解决办法] 把字体改成 Monospaced (查了一下 说是MATLAB默认字 ...