启动就加载(一)----注解方式实现的。static项目启动的时候就加载进来(一般用于常用参数)...

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过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里的数据一定要重新加载一次。
否则它还是原来启动的时候里面的数据。

 

假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情请点击http://106.12.206.16:8080/qingruihappy/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值