假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html
一,案例
1.1,图片分析
1.2,代码
1.2.1,编写加载系统参数的servlet
1 public class SysInitServlet extends HttpServlet { 2 3 public void init() throws ServletException { 4 Map<String,Object> sysParam = new HashMap<String,Object>(); 5 Map<String,String> supType = new HashMap<String,String>(); 6 supType.put("1", "普通供应商"); 7 supType.put("2", "一级供应商"); 8 supType.put("3", "二级供应商"); 9 10 Map<String,String> goodsColor = new HashMap<String,String>(); 11 goodsColor.put("red", "红色"); 12 goodsColor.put("green", "绿色"); 13 goodsColor.put("blue", "蓝色"); 14 15 sysParam.put("goodsColor", goodsColor); 16 sysParam.put("supType", supType); 17 ServletContext application =this.getServletContext(); 18 application.setAttribute("sysParam",sysParam); 19 System.out.println("=======初始化完成,已加载数据字典数据======="); 20 } 21 }
1.2.2,web.xml配置servlet信息
1 <servlet> 2 <servlet-name>SysInitServlet</servlet-name> 3 <servlet-class>cn.itcast.servlets.SysInitServlet</servlet-class> 4 <load-on-startup>2</load-on-startup> 5 </servlet> 6 <servlet-mapping> 7 <servlet-name>SysInitServlet</servlet-name> 8 <url-pattern>/servlet/SysInitServlet</url-pattern> 9 </servlet-mapping>
1.2.3,页面使用
1 <div> 2 <label for="supType">供应商类型:</label> 3 <select id="cc" class="easyui-combobox" name="supType" style="width:200px;"> 4 <c:forEach items="${applicationScope.sysParam.supType}" var="supType"> 5 <option value="${supType.key}">${supType.value}</option> 6 </c:forEach> 7 </select> 8 </div>
二,升级用法
说明,现在就要把上面的一套用法放到spring中来用,而且还有就是后续有可能还要加进来其它的参数来。现在还不确定,所以现在就要把一个sql语句写到数据库中来。
见下面的图片的说明。
2.1,图例说明
2.2,代码
2.2.1,action类
1 public class SysParamAction extends BaseAction { 2 @Resource 3 private SysParamService sysParamService; 4 //方式一 5 //insert方法 --》调用sysParamInit(); 6 //update方法 -->调用sysParamInit(); 7 //delete方法 -->调用sysParamInit(); 8 9 //方式二 10 //insert方法 --》调用updateSysParam(); 11 //update方法 -->调用updateSysParam(); 12 //delete方法 -->调用updateSysParam(); 13 14 15 16 17 18 //业务类型规则 添加仓库(as -- addStoreHouse )----》刷新参数 19 //拦截器addStoreHouse--》调用sysParamInit() 20 21 22 @RequestMapping("/reloadSysParam") 23 @ResponseBody 24 public Object reload(){ 25 sysParamInit(); 26 return null; 27 28 } 29 30 31 @PostConstruct 32 private void sysParamInit(){ 33 // Put your code here 34 /*Map<String, Object> sysParamMap = new HashMap<String, Object>(); 35 Map<String, String> supTypeMap = new HashMap<String, String>(); 36 supTypeMap.put("1", "一级供应商"); 37 supTypeMap.put("2", "二级供应商"); 38 supTypeMap.put("3", "三级供应商"); 39 sysParamMap.put("supType", supTypeMap); 40 41 Map<String, String> goodsColorMap = new HashMap<String, String>(); 42 goodsColorMap.put("1", "红色"); 43 goodsColorMap.put("2", "绿色"); 44 goodsColorMap.put("3", "蓝色"); 45 sysParamMap.put("goodsColor", goodsColorMap);*/ 46 47 application.setAttribute("sysParam", sysParamService.sysParamLoad()); 48 49 System.out.println("=================系统参数初始化完成222222222===================="); 50 } 51 52 @RequestMapping("/doAjax") 53 @ResponseBody //如果返回json格式,需要这个注解,这里用来测试环境 54 public Object doAjax(Supplier supplier){ 55 System.out.println("---doAjax.supplier:"+supplier); 56 supplier.setSupName("supName1"); 57 return supplier; 58 } 59 60 61 62 }
2.2.2,SysParamService
1 public interface SysParamService extends BaseService<SysParam> { 2 //加载系统参数 3 public Map<String, Object> sysParamLoad(); 4 }
2.2.3,SysParamServiceImpl
1 package cn.itcast.service.impl; 2 3 import java.util.HashMap; 4 import java.util.List; 5 import java.util.Map; 6 7 import javax.annotation.Resource; 8 9 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.stereotype.Service; 11 12 import cn.itcast.dao.SupplierMapper; 13 import cn.itcast.entity.Page; 14 import cn.itcast.entity.Supplier; 15 import cn.itcast.entity.SysParam; 16 import cn.itcast.service.SupplierService; 17 import cn.itcast.service.SysParamService; 18 19 @Service("sysParamService") 20 public class SysParamServiceImpl extends BaseServiceImpl<SysParam> implements SysParamService { 21 22 //加载所有的系统参数 23 @Override 24 public Map<String, Object> sysParamLoad() { 25 26 //用来存储系统参数 27 Map<String, Object> sysParamMap= new HashMap<String, Object>(); 28 //用来存储字段类型的map 29 Map<String, Object> fieldMap= null; 30 List<SysParam> sysParamList = sysParamMapper.selectSysParamList(null); 31 for (SysParam sysParam : sysParamList) { 32 //类型为1,表示需要重新执行sql,查询其它表的数据 33 if("1".equals(sysParam.getSysParamType())){ 34 //获取需要执行的sql 35 String sql = sysParam.getSysParamValue(); 36 System.out.println("sql:"+sql); 37 //执行sql,查询其它表的数据 38 List<SysParam> selectOtherTableList = sysParamMapper.selectOtherTable(sql); 39 //新建字段map,用来存入其它表的数据 40 fieldMap = new HashMap<String, Object>(); 41 //把其它数据遍历并存放于 字段的map 42 for (SysParam sysParam2 : selectOtherTableList) { 43 fieldMap.put(sysParam2.getSysParamValue(), sysParam2.getSysParamText()); 44 } 45 //把字段的map存入到系统参数的map 46 sysParamMap.put(sysParam.getSysParamField(), fieldMap); 47 48 }else{ 49 50 /* 如果为null,表示该字段没有存在系统参数的Map,需要新建到 字段map,先存放该字段的值对字段的map, 51 * 并把字段的map存放在系统参数map里 52 */ 53 if(sysParamMap.get(sysParam.getSysParamField())==null){ 54 fieldMap = new HashMap<String, Object>(); 55 //先存放该字段的值到字段的map 56 fieldMap.put(sysParam.getSysParamValue(), sysParam.getSysParamText()); 57 //再把字段的map存放到系统的参数map 58 sysParamMap.put(sysParam.getSysParamField(), fieldMap); 59 }else{ 60 fieldMap = (Map<String, Object>) sysParamMap.get(sysParam.getSysParamField()); 61 fieldMap.put(sysParam.getSysParamValue(), sysParam.getSysParamText()); 62 } 63 64 } 65 66 67 } 68 69 70 return sysParamMap; 71 } 72 73 }
2.2.4,SysParamMapper
1 package cn.itcast.dao; 2 3 import cn.itcast.entity.SysParam; 4 import java.util.List; 5 import org.apache.ibatis.annotations.Param; 6 7 public interface SysParamMapper extends BaseMapper<SysParam>{ 8 9 //查询所有的系统参数表的记录,包括了类型为“1”的记录 10 public List<SysParam> selectSysParamList(SysParam sysParam); 11 12 //查询其它表的数据 13 public List<SysParam> selectOtherTable(String sql); 14 15 }
2.2.5,SysParamMapper.xml
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > 3 <mapper namespace="cn.itcast.dao.SysParamMapper" > 4 <resultMap id="sysParamBaseResultMap" type="cn.itcast.entity.SysParam" > 5 <id column="sys_param_id" property="sysParamId" jdbcType="BIGINT" /> 6 <result column="sys_param_field" property="sysParamField" jdbcType="VARCHAR" /> 7 <result column="sys_param_value" property="sysParamValue" jdbcType="VARCHAR" /> 8 <result column="sys_param_text" property="sysParamText" jdbcType="VARCHAR" /> 9 <result column="sys_param_type" property="sysParamType" jdbcType="VARCHAR" /> 10 </resultMap> 11 12 <select id="selectSysParamList" parameterType="SysParam" resultMap="sysParamBaseResultMap"> 13 select * from sys_param 14 </select> 15 16 <select id="selectOtherTable" parameterType="string" resultMap="sysParamBaseResultMap"> 17 <!-- 参数为sql时的使用${value} --> 18 <!-- select s.sh_id as sys_param_value,s.sh_name as sys_param_text from store_house s --> 19 ${value} 20 </select> 21 22 </mapper>
注意上面的那句sql语句是在数据库里面保存的。
PostConstruct注意这个注解就是在启动的加载
在这里要注意了,假如修改了map里的数据一定要重新加载一次。
否则它还是原来启动的时候里面的数据。