大型运输行业实战_day07_2_数据字典实现
1.数据字典表
CREATE TABLE `dic` (
`id` int(32) NOT NULL AUTO_INCREMENT,
`table_name` varchar(225) DEFAULT NULL,
`field_name` varchar(225) DEFAULT NULL,
`field_value` varchar(225) DEFAULT NULL,
`field_describe` varchar(225) DEFAULT NULL,
`describe` varchar(225) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2. DicMap.java类
package com.day02.sation.map; import com.day02.sation.dao.IDicDao;
import com.day02.sation.model.Dic;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import java.util.HashMap;
import java.util.List;
import java.util.Map; /**
* Created by Administrator on 1/3.
*/ public class DicMap { private static IDicDao dicDao; private static Map<String, String> map = new HashMap(); static {
//获取应用上下文对象
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-config.xml");
//获取dicDao实例
dicDao = ctx.getBean(IDicDao.class);
//调用方法初始化字典
addMapValue();
} public static String getFieldDetail(String tableName, String fieldName, String filedValue) {
String key = tableName + "_" + fieldName + "_" + filedValue;
String value = map.get(key);
if (value == null) { //如果 value 为空 重新查询数据库
Dic dicQuery = new Dic();
Dic dic = dicDao.getDic(dicQuery);
if (dic != null) {//数据有该值
String fieldDescribe = dic.getFieldDescribe();
map.put(key, fieldDescribe);
return fieldDescribe;
}
value = "暂无";
}
return value;
} /**
* 初始化字典数据
*/
private static void addMapValue() {
List<Dic> list = dicDao.getList();
for (int i = 0; i < list.size(); i++) {
Dic dic = list.get(i);
String tableName = dic.getTableName();
String fieldName = dic.getFieldName();
String fieldValue = dic.getFieldValue();
String key = tableName + "_" + fieldName + "_" + fieldValue;
String fieldDescribe = dic.getFieldDescribe();
map.put(key, fieldDescribe);
} }
}
3.dao接口
/**
* 获取字典列表
* @return
*/
List<Dic> getList(); /**
* 根据 key 获取字典值
* @param dic
* @return
*/
Dic getDic(Dic dic);
4.mapper映射文件
<!--查询字典列表-->
<select id="getList" resultType="com.day02.sation.model.Dic">
SELECT d.id, d.table_name tableName, d.field_name fieldName, d.field_value fieldValue,
d.field_describe fieldDescribe, d.`describe` FROM dic AS d
</select>
<!--根据key获取字典值-->
<select id="getDic" parameterType="com.day02.sation.model.Dic" resultType="com.day02.sation.model.Dic">
SELECT d.id, d.table_name tableName, d.field_name fieldName, d.field_value fieldValue,
d.field_describe fieldDescribe, d.`describe` FROM dic AS d
WHERE d.table_name=#{tableName} AND d.field_name=#{fieldName} AND d.field_value=#{fieldValue}
</select>
5.在模型中使用

6.页面显示

7.浏览器中使用firbug查看返回数据

8.页面显示效果

到此字典使用完毕!
大型运输行业实战_day07_2_数据字典实现的更多相关文章
- 大型运输行业实战_day11_2_事务理论与实际生产配置事务管理
		
1.什么是事务(Transaction:tx) 数据库的某些需要分步完成,看做是一个整体(独立的工作单元),不能分割,要么整体成功,要么整体生效.“一荣俱荣,一损俱损”,最能体现事务的思想.案例:银行 ...
 - 大型运输行业实战_day08_1_memcache缓存生产应用
		
1.memcache使用环境搭建 1.安装memcached服务器 安装方法 以管理员身份打开cmd,在cmd中执行如下命令: 注意:在执行该命令时必须在memcached.exe文件下执行. 2.开 ...
 - 大型运输行业实战_day15_1_全文检索之Lucene
		
1.引入 全文检索简介: 非结构化数据又一种叫法叫全文数据.从全文数据(文本)中进行检索就叫全文检索. 2.数据库搜索的弊端 案例 : select * from product whe ...
 - 大型运输行业实战_day14_1_webserivce简单入门
		
1.简单使用 1.1.服务端 1.编写接口 package com.day02.sation.ws; /** * Created by Administrator on 1/12. */ public ...
 - 大型运输行业实战_day13_1_定时任务spring-quartz
		
1.jar包 拷贝quartz-2.2.3.jar包到项目 2.编写定时任务类TicketQuart.java package com.day02.sation.task; import com.da ...
 - 大型运输行业实战_day12_1_权限管理实现
		
1.业务分析 权限说的是不同的用户对同一个系统有不同访问权限,其设计的本质是:给先给用户分配好URL,然后在访问的时候判断该用户是否有当前访问的URL. 2.实现 2.1数据库设计标准5表权限结构 2 ...
 - 大型运输行业实战_day11_1_aop理论与aop实际业务操作
		
1.aop概述 Spring的AOP:什么叫做AOP:Aspect oritention programming(面向切面编程)什么是切面:看图,业务方法 执行前后.AOP的目的:AOP能够将那些与业 ...
 - 大型运输行业实战_day01_2_需求文档
		
1.文档格式 (见模板文件) 2.Axure简单使用 2.1安装Axure傻瓜式安装 2.2简单使用axure 3.总结 需求文件完成后应该包括三种文件: 1.axure文件 2.axure生成的ht ...
 - 大型运输行业实战_day01_1_业务分析
		
1.业务分析 发展历史: 上车收费-->车站买票(相当于先收钱后上车)-->站务系统--->联网售票 2.项目结构 3.开发流程分析 1.业务分析 图文并茂 ...
 
随机推荐
- Javascript之类型检测(一)
			
js中有7种内置类型,这7种类型又分为2大类:基本数据类型和对象(object) 一.检测原始(基本数据:字符串.数字.布尔.null.undefined.symbol)类型. 用typeof检测原始 ...
 - 1006 Sign In and Sign Out (25 分)
			
1006 Sign In and Sign Out (25 分) At the beginning of every day, the first person who signs in the co ...
 - js在table指定tr行上或底下添加tr行
			
js在table指定tr行上或下面添加tr行 function onAddTR(trIndex) { var tb = document.getElementB ...
 - 利用Red Blob游戏介绍A*算法
			
转自:http://gad.qq.com/program/translateview/7194337 在游戏中,我们经常想要找到从一个位置到另一个位置的路径.我们不只是想要找到最短距离,同时也要考虑旅 ...
 - MapReduce C++ Library
			
MapReduce C++ Library for single-machine, multicore applications Distributed and scalable computing ...
 - 了解vue
			
什么是Vuex Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 状态,其实指的是实例之间的 ...
 - python(十二)下:ORM框架SQLAlchemy使用学习
			
此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...
 - 关于tcp的三次握手与四次挥手,以及粘包
			
tcp三次握手: TCP是因特网中的传输层协议,使用三次握手协议建立连接.当主动方发出SYN连接请求后,等待对方回答SYN+ACK[1],并最终对对方的 SYN 执行 ACK 确认.这种建立连接的方法 ...
 - OpenACC 书上的范例代码(Jacobi 迭代),part 3
			
▶ 使用Jacobi 迭代求泊松方程的数值解 ● 使用 data 构件,强行要求 u0 仅拷入和拷出 GPU 各一次,u1 仅拷入GPU 一次 #include <stdio.h> #in ...
 - zend_soap做webservice的使用方法
			
只用到zend_soap包中的Zend_Soap_Server,Zend_Soap_AutoDiscover和Zend_Soap_Client三个类 首先要注意ZF是调用php的soap扩展,所以 ...