系统参数的设计,通用方法提取,页面处理map字符串并显示系统参数(增强版)
2016-05-14 16:38
471 查看
一、系统参数表设计
系统参数表及其查询相应其他表并生成参数表的语句(比如查询下边的仓库表,把仓库id和name也对应的系统启动时放到servletApplication中)
SysParam.java
SysParamMapper.java
SysParamMapper.xml
三、service及action层
SysParamServiceImpl.java (这一层主要抽取了系统参数的处理方法,以后直接用即可)
SysParamAction.java
四、页面粗处理传过去的在application里的map值,并根据key值取出来显示在界面
抽取的返回系统参数的方法
common.js
easyUI中这样用
系统参数表及其查询相应其他表并生成参数表的语句(比如查询下边的仓库表,把仓库id和name也对应的系统启动时放到servletApplication中)
/*====================================系统参数表==============================*/ /*==============================================================*/ /* Table: sys_param */ /*==============================================================*/ create table sys_param ( sys_param_id bigint auto_increment, sys_param_field varchar(50), sys_param_value varchar(500), sys_param_text varchar(50), sys_param_type varchar(2), primary key (sys_param_id) ); insert into sys_param(sys_param_field,sys_param_value,sys_param_type) values('shId','select s.sh_id as sys_param_value,s.sh_name as sys_param_text from store_house s','1');仓库表(示例第三方表的部分字段怎么加入到系统参数,而不用全部写入字典表)
/*==============================================================*/ /* Table: store_house */ /* sh_id 仓库编号, sh_name 仓库名称, sh_responsible 责任人, sh_phone 联系电话, sh_address 联系地址, sh_type 仓库类型, sh_remark 备注, */ /*==============================================================*/ create table store_house ( sh_id varchar(10) not null, sh_name varchar(20), sh_responsible varchar(20), sh_phone varchar(11), sh_address varchar(50), sh_type varchar(10), sh_remark varchar(100), primary key (sh_id) );二、系统参数即字典表实体和Dao及对应的mybatis的xml
SysParam.java
package cn.buaa.scm.entity; import java.io.Serializable; public class SysParam implements Serializable { /** * */ private static final long serialVersionUID = -2768672857058941094L; @Override public String toString() { return "SysParam [sysParamId=" + sysParamId + ", sysParamField=" + sysParamField + ", sysParamValue=" + sysParamValue + ", sysParamText=" + sysParamText + ", sysParamType=" + sysParamType + "]"; } private Long sysParamId; private String sysParamField; private String sysParamValue; private String sysParamText; private String sysParamType; public Long getSysParamId() { return sysParamId; } public void setSysParamId(Long sysParamId) { this.sysParamId = sysParamId; } public String getSysParamField() { return sysParamField; } public void setSysParamField(String sysParamField) { this.sysParamField = sysParamField; } public String getSysParamValue() { return sysParamValue; } public void setSysParamValue(String sysParamValue) { this.sysParamValue = sysParamValue; } public String getSysParamText() { return sysParamText; } public void setSysParamText(String sysParamText) { this.sysParamText = sysParamText; } public String getSysParamType() { return sysParamType; } public void setSysParamType(String sysParamType) { this.sysParamType = sysParamType; } }
SysParamMapper.java
package cn.buaa.scm.dao; import java.util.List; import cn.buaa.scm.entity.SysParam; public interface SysParamMapper extends BaseMapper<SysParam> { public List<SysParam> selectList(String type); public List<SysParam> selectOthreTable(String sql); }
SysParamMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <mapper namespace="cn.buaa.scm.dao.SysParamMapper" > <resultMap id="sysParamResultMap" type="cn.buaa.scm.entity.SysParam" > <id column="sys_param_id" property="sysParamId" jdbcType="BIGINT" /> <result column="sys_param_field" property="sysParamField" jdbcType="VARCHAR" /> <result column="sys_param_value" property="sysParamValue" jdbcType="VARCHAR" /> <result column="sys_param_text" property="sysParamText" jdbcType="VARCHAR" /> <result column="sys_param_type" property="sysParamType" jdbcType="VARCHAR" /> </resultMap> <!-- 获取整个表的数据,用来启动时加载系统参数 --> <select id="selectList" parameterType="string" resultMap="sysParamResultMap"> select * from sys_param </select> <!-- 查询其它表的数据,使用${value}格式,允许使用sql语句作为参数执行 --> <select id="selectOthreTable" parameterType="string" resultMap="sysParamResultMap"> ${value} </select> </mapper>
三、service及action层
SysParamServiceImpl.java (这一层主要抽取了系统参数的处理方法,以后直接用即可)
package cn.buaa.scm.service.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.stereotype.Service; import cn.buaa.scm.entity.SysParam; import cn.buaa.scm.service.SysParamService; @Service("sysParamService") public class SysParamServiceImpl extends BaseServiceImpl<SysParam> implements SysParamService { @Override public Map<String, Object> selectList() { // TODO Auto-generated method stub List<SysParam> sysParams=sysParamMapper.selectList(""); //系统参数Map,用来存放所有字段的相关参数信息 Map<String, Object> sysParamMap =new HashMap<String, Object>(); Map<String, Object> fieldMap=null; for (SysParam sysParam : sysParams) { if("1".equals(sysParam.getSysParamType())){ //获取需要执行SQL,用来查询其它表 String sql = sysParam.getSysParamValue(); System.out.println("========="+sql); //执行查询,并把结果存在List中,元素为系统参数类型的实体 List<SysParam> otherList= sysParamMapper.selectOthreTable(sql); fieldMap = new HashMap<String, Object>(); //遍历,并把数据存到字段MAP for (SysParam otherSysParam : otherList) { fieldMap.put(otherSysParam.getSysParamValue(), otherSysParam.getSysParamText()); } //把字段相关Map存放在系统参数Map,用原系统参数表查询的sysParam对象的sysParamField作为kdy sysParamMap.put(sysParam.getSysParamField(), fieldMap); }else{ //从存放系统参数的map获取字段的map if(sysParamMap.get(sysParam.getSysParamField())==null){ fieldMap = new HashMap<String, Object>(); fieldMap.put(sysParam.getSysParamValue(), sysParam.getSysParamText()); sysParamMap.put(sysParam.getSysParamField(), fieldMap); }else{ fieldMap = (Map<String, Object>) sysParamMap.get(sysParam.getSysParamField()); fieldMap.put(sysParam.getSysParamValue(), sysParam.getSysParamText()); } } } //System.out.println(sys); return sysParamMap; } }
SysParamAction.java
package cn.buaa.scm.action; import java.util.Map; import javax.annotation.PostConstruct; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import cn.buaa.scm.entity.SysParam; import cn.buaa.scm.service.SysParamService; @Controller @RequestMapping("/sysParam") public class SysParamAction extends BaseAction { @Resource private SysParamService sysParamService; @RequestMapping(value="/insert") @ResponseBody //如果返回json格式,需要这个注解,这里用来测试环境 public Object insert(SysParam sysParam){ //添加到数据库的系统参数表 reloadSysParam(); return null; } //后边可以用来重新加载参数 @RequestMapping(value="/reload") @ResponseBody public void reloadSysParam() { loadSysParam(); } //系统启动时加载参数 @PostConstruct public void initSysParam(){ loadSysParam(); } //用来加载系统参数 public void loadSysParam(){ Map<String, Object> sysParamMap = sysParamService.selectList(); application.setAttribute("sysParam", sysParamMap); System.out.println("===================系统参数加载成功2====================="); } }
四、页面粗处理传过去的在application里的map值,并根据key值取出来显示在界面
抽取的返回系统参数的方法
common.js
function valueToText(str, value) { //类似下面的这种,从application中拿出系统参数的map{} // var str = "${applicationScope.sysParam.supType}"; //alert(str); str = str.substring(1, str.length - 1); //alert(str); var array = str.split(","); for ( var i = 0; i < array.length; i++) { //alert(array[i]); var array2 = array[i].split("="); //alert("array2[0]" + array2[0]); //alert("value" + value); if ($.trim(array2[0]) == $.trim(value)) { return array2[1]; } } return "类型没有定义"; }
easyUI中这样用
{ field : 'goodsColor', title : '颜色', width : 100, formatter: function(value,row,index){ var str = "${applicationScope.sysParam.goodsColor}"; return valueToText(str,value); } }
相关文章推荐
- 线程
- Android中操作数据的集中方式---文件,SQLite,ContentProvider
- 常用效果集绵
- Ubuntu on Windows 10工作方式全解析
- PHP5升级到PHP7注意点(windows环境)
- 纯手工编写可执行程序
- LINUX 运维命令
- 练习: C#---函数(100以内7有关的数、99乘法表、100以内奇数和、硬币组合)
- 在WebLogic新建针对Oracle数据库的JNDI数据源
- 1003 Problem C
- UbuntuBSD 官方网站正式上线
- 抽象类
- Debug和Release区别
- 《 常见算法与数据结构》符号表ST(2)——初等实现分析和有序符号表
- 两招让你成为牛X的T型人才
- 编写XML文件
- 事务-程序员的必经之路
- 新优麒麟版本发布PK微软Windows
- Failed to install Python Cryptography package
- VMWare虚拟机中的MacOSX使用XCode运行无法连接iPhone设备