当前位置: 首页 > news >正文

做网站图片太原seo外包平台

做网站图片,太原seo外包平台,东胜做网站,湖南企业网站建设应用开发中数据字典项设计实现方案 在应用开发中#xff0c;总会遇到许多数据字典项#xff0c;比如对象状态、对象类型等等#xff0c;这些项一般都是固定的若干可选值选项#xff0c;比如对象状态可能有新建、修改、删除等状态#xff0c;这些数据字典项一旦定义完毕… 应用开发中数据字典项设计实现方案   在应用开发中总会遇到许多数据字典项比如对象状态、对象类型等等这些项一般都是固定的若干可选值选项比如对象状态可能有新建、修改、删除等状态这些数据字典项一旦定义完毕改动的频率非常低在应用开发中为了处理方便一般要对这些数据字典项值选项进行数字编码例如 0表示新建1表示修改2表示删除等以方便应用程序中使用。而UI显示对象信息时不能显示对象状态等的编码对于编码值设计人员知道代表什么意思但用户就不明白了所以需要进行编码转换从编码转换为文字描述名称也就是需要把状态编码0转换为“新建”把1转换为“修改”把2转换为“删除”等显示给用户用户才明白对象当前的状态是什么。 下面介绍一下常用的实现方法 实现方案 一、在java文件中定义数据字典项 我们习惯上把应用中遇到的数据字典项都定义到一个java文件中这是最常用的方法实现起来比较简单但维护起来就非常繁琐特别是数据字典项比较多的情况下相应的java文件就会比较大一旦数据字典项有更新那么维护起来就比较费时费力。 在java文件中定义数据字典项通常情况下定义为static举例来说类ReportConstants中定义了以下数据字典项     public static final int CODE_USERINF_TECHELEVEL_GJ 1;       public static final String CODE_USERINF_TECHELEVEL_GJ_KEY 高级;       public static final int CODE_USERINF_TECHELEVEL_ZJ 2;       public static final String CODE_USERINF_TECHELEVEL_ZJ_KEY 中级;       public static final int CODE_USERINF_TECHELEVEL_CJ 3;       public static final String CODE_USERINF_TECHELEVEL_CJ_KEY 初级;       public static final int CODE_USERINF_TECHELEVEL_WJ 4;   public static final String CODE_USERINF_TECHELEVEL_WJ_KEY 无职称; 那么我们在实现中就可以直接引用相应的数据字典项编码及名称另外一般情况下需要定义数据字典项编码和名称的转换方法比如     public static String getCodeName(int lCode)        {               //初始化返回值               String strReturn 未知;         switch (lCode)               {                      case CODE_USERINF_TECHELEVEL_GJ :                             strReturn CODE_USERINF_TECHELEVEL_GJ_KEY;                             break;                      case CODE_USERINF_TECHELEVEL_ZJ :                             strReturn CODE_USERINF_TECHELEVEL_ZJ_KEY;                             break;                      case  CODE_USERINF_TECHELEVEL_CJ :                             strReturn CODE_USERINF_TECHELEVEL_CJ_KEY;                             break;                      case  CODE_USERINF_TECHELEVEL_WJ :                             strReturn CODE_USERINF_TECHELEVEL_WJ_KEY;                             break;               }               return strReturn;        } 这个方法实现了通过数据字典项编码获得数据字典项名称的功能。那么还需要实现一个对应的方法getCodeByName(String name)即通过数据字典项名称获取数据字典项编码功能代码这里省略请读者自己完成。这样就可以实现数据字典项编码和名称的相互转换。 但是一旦出现数据字典项名称或编码需要更改(“无职称”项编码需要由“4”改为“0”)或增加减少数据字典项都需要更新java文件代码。是否有简便的方法在满足上述需求的情况下又不更新java文件代码答案是肯定的。下面我们来介绍两种实现方法一中使用xml文件一种在数据库定义。 二、在xml文件中定义 第一种方案是应用xml配置文件来定义数据字典项。使用xml配置文件以便最大限度的减小维护的工作量避免java代码的频繁修改。 下面我们分步骤详细介绍一下使用xml配置文件的实现方案   第一步定义xml数据字典项配置文件 首先新建一个xml文件命名为DataDictionaryConfig.xml名字可以自己定义把应用的用到的数据字典项分组定义到xml文件中举例如下我们定义了下列数据字典项 ?xml version1.0 encodingGB2312? data-dictionaries     data-dictionary       group value 0 nameObjectStatus          option value0 namedetached/          option value1 namenew/          option value2 nameupdated/          option value3 namedeleted/       /group       group value 1 nameObjectTypes          option value0 name对象类型选项0/          option value1 name对象类型选项1/          option value2 name对象类型选项2/          option value3 name对象类型选项3/ option value4 name对象类型选项4/       /group     /data-dictionary /data-dictionaries 这个xml文件可以根据需要进行扩展满足更复杂应用的需要。 第二步定义数据字典项对象类和数据字典项分组对象类     对于数据字典项这里我们定义了一个数据字典项对象类一组数据字典选项集我们定义了一个数据字典项分组对象类如下 1、数据字典项类 public class DataDictionaryItem {   public DataDictionaryItem()   {   }     private String code;   private String name;     public void setCode(String code)   {     this.code code;   }     public String getCode()   {     return this.code;   }     public void setName(String name)   {     this.name name;   }     public String getName()   {     return this.name;   }   }   2、数据字典项分组类 public class DataDictionaryItems {   public DataDictionaryItems()   {   }   //数据字典项分组编码   private String groupCode;   //数据字典项分组名称   private String groupName;   //数据字典项详细   private java.util.ArrayList items;     public void setGroupCode(String code)   {     this.groupCode code;   }   public String getGroupCoude()   {     return this.groupCode;   }     public void setGroupName(String name)   {     this.groupName name;   }   public String getGroupName()   {     return this.groupName;   }     //设置数据字典项   public void setDataDictionaryItem(DataDictionaryItem item)   {     if(this.items null)       this.items new java.util.ArrayList();     this.items.add(item);   }     //设置数据字典项   public void setDataDictionaryItem(String itemName, String itemCode)   {     if(this.items null)       this.items new java.util.ArrayList();     DataDictionaryItem item new DataDictionaryItem();     item.setCode(itemCode);     item.setName(itemName);     this.items.add(item);   }     //获得数据字典项组对象   public java.util.ArrayList getDataDictioanryItems()   {     return this.items;   }   第三步定义Xml数据字典项配置文件解析类这里我们使用Dom4J相应的jar可以在http://www.dom4j.org/上找到 import org.dom4j.*; import org.dom4j.io.*; import java.util.*;   public class XMLDDItemParser {     //数据字典项结构   public static DataDictionaryItems dataItems ;   private static String GROUP_NAME name;   private static String GROUP_CODE value;   private static String ITEM_NAME name;   private static String ITEM_CODE value;     public XMLDDItemParser() {   }       /**    * 获得分组数据字典项集    * param groupName String    * return DataDictionaryItems    */   public static DataDictionaryItems getDataDictionaryItems(String groupName)   {     if(dataItems null)       dataItems parseXML(groupName);     return dataItems;   }     /**    * 根据分组名称解析xml文件获得该分组下数据字典项集    * param gName String    * return DataDictionaryItems 数据字典项分组对象    */   public static DataDictionaryItems parseXML(String gName)   {     try     {       org.dom4j.io.SAXReader saxReader new org.dom4j.io.SAXReader();       Document document saxReader.read(DataDictionaryConfig.xml);         dataItems new DataDictionaryItems();         List list document.selectNodes(//group);       Iterator iter list.iterator();       while (iter.hasNext())       {         Node node (Node) iter.next();         if (node instanceof Element)         {           //document           Element element (Element) node;           String GroupName element.attributeValue(GROUP_NAME);           String GroupValue element.attributeValue(GROUP_CODE);           //设置分组名称编码           dataItems.setGroupName(GroupName);           dataItems.setGroupCode(GroupValue);           //取组内数据字典项           if (gName.equals(GroupName))           {             //取数据字典项名称编码             Iterator elemIter element.elementIterator();             while (elemIter.hasNext())             {               Element elem (Element) elemIter.next();               dataItems.setDataDictionaryItem(elem.attributeValue(ITEM_NAME), elem.attributeValue(ITEM_CODE));             }           }         }       }     }     catch (Exception ex) {       ex.printStackTrace();     }     return dataItems;   } 第四步提供数据字典项编码转换方法类 public class DataDictionaryUtils {   public DataDictionaryUtils() {   }     /**    * 根据数据项名称转换为数据项编码    * param groupName String    * param itemName String    * return String  数据项编码    */   public static String getItemCode(String groupName, String itemName)   {     String code -1;     DataDictionaryItems dataItems XMLDDItemParser.getDataDictionaryItems(groupName);         java.util.ArrayList items dataItems.getDataDictioanryItems();     if(items ! null)     {       DataDictionaryItem item;       for(int i 0; i items.size(); i)       {         item (DataDictionaryItem) items.get(i);         if(item ! null)         {           String name item.getName();           if(name.equals(itemName))           {             code item.getCode();             break;           }         }       }     }     return code;   }   /**    * 根据数据项编码转换为数据项名称    * param groupName String    * param itemCode String    * return String    */    public static String getItemName(String groupName, String itemCode)   {     String name 未知;     DataDictionaryItems dataItems XMLDDItemParser.getDataDictionaryItems(groupName);         java.util.ArrayList items dataItems.getDataDictioanryItems();     if (items ! null)     {       DataDictionaryItem item;       for (int i 0; i items.size(); i)       {         item (DataDictionaryItem) items.get(i);         if (item ! null)         {           String code item.getCode();           if (code.equals(itemCode))           {             name item.getName();             break;           }         }       }     }     return name;   }   至此我们已经完成了该方案的设计。使用xml文件增加删除数据字典项等只需要更新xml文件即可不涉及java文件的更新。 Xml可以根据应用的具体需要进行扩展设计。这里仅仅抛砖引玉提供一种思路。 三、使用数据库表 上一种方法我们使用xml文件定义数据字典项现在我们把数据字典项定义在数据库表中下面我们来详细介绍实现方式 第一步定义数据字典项数据表结构 根据前面xml文件定义这里我们定义两张表一张是数据字典分组信息表一张是数据字典项详细信息表。如下 drop table datadic_groups;create table datadic_groups(    group_code varchar2(20) primary key,    group_name varchar2(50) );drop table datadic_items;create table datadic_items(    dataitem_code varchar2(20) primary key,    dataitem_name varchar2(50),    group_code varchar2(20));alter table datadic_items add constraint dataitem_foreignkey foreign key (group_code) references datadic_groups(group_code);     这两张表可以根据应用的具体需求进行扩充这里不再赘述。 第二步根据定义的数据字典表结构定义数据字典实体类。 (请参照二、在xml文件中定义的第二步) 第三步实现数据库表中数据字典项的查询功能   /**    * 实现从数据库查询数据字典项    * param gName String    * return DataDictionaryItems    */   public static DataDictionaryItems getFromDB(String gName)   {      dataItems new DataDictionaryItems();           try      {          //获取数据连接         java.sql.Connection conn getConnection();         if(conn ! null)         {            //查询数据库根据组名称查询组编号根据组编号获取该组内数据字典项信息            String strSql select items.dataitem_code, items.dataitem_name, items.group_code, dgroups.group_name from datadic_items items, datadic_groups dgroups where items.group_code dgroups.group_code and dgroups.group_namegName;            java.sql.Statement stmt conn.createStatement();            java.sql.ResultSet rs stmt.executeQuery(strSql);            while(rs.next())            {                String dataitem_code rs.getString(1);                String dataitem_name rs.getString(2);                dataItems.setDataDictionaryItem(dataitem_name, dataitem_code);                  String group_code rs.getString(3);                String group_name rs.getString(4);                dataItems.setGroupCode(group_code);                dataItems.setGroupName(group_name);            }         }      }      catch(Exception ex)      {        ex.printStackTrace();      }      return dataItems;   }   第四步提供数据字典项编码转换方法类     (请参照二、在xml文件中定义的第四步)   四、进一步完善 1、两种方式都可以提供数据字典项维护界面直接在维护界面上操作数据字典项避免由于误操作导致xml文件或数据库数据错误。具体的实现也是比较简单不再详细说明。 2、使用数据库表方式时如果想减少频繁查询数据库可以将数据字典项信息在系统启动后第一次访问时加载内存中如果数据字典项数据量比较大可实现一自维护线程采用最近最少使用算法将频繁使用的数据字典项驻留内存将长期不用的数据字典项从内存中删除每次自动检查内存中的数据字典项如果存在则从内存中读取如果不存在则查询数据库替换内存中最少使用的数据字典项。 3、增加运行日志记录可以使用log4J来记录运行日志
http://www.dnsts.com.cn/news/2575.html

相关文章:

  • 免费网站设计定制站长工具永久
  • 学校html网站模板代码百度网站收录提交入口
  • 网站cmd做路由分析电商平台推广费用大概要多少
  • 北京和隆优化科技泰安seo排名
  • 有没有免费的推广网站站内推广方案
  • 极客网站建设网上销售平台怎么做
  • 外贸网站外链怎么做百度客服投诉中心
  • 网站建设怎么做更好北京网站制作400办理多少钱
  • 香河住房与建设局网站网络推广怎么做?
  • 扬中市建设局网站广州网站推广服务
  • 服务器上如何建设多个网站最近一周的国内新闻
  • 摄影图片长春seo网站管理
  • 广州市做网站公司软文范例大全300字
  • 河南电商网站设计西安网站seo厂家
  • python做网站有什么弊端海外aso优化
  • 枣庄市住房和城乡建设局网站百度竞价员
  • 外贸公司网站案例洗发水营销推广软文800字
  • 网站建设需要的框架结构2022年最新十条新闻
  • wordpress个人云盘网站seo是什么
  • 品牌型网站制头条新闻 最新消息条
  • 东戴河网站建设百度手机快速排名点击软件
  • 福建漳州网站建设哪家便宜宁波seo优化服务
  • 微网站备案上海网络推广公司
  • 成品网站定制头条权重查询
  • easyui 网站设计广州抖音推广
  • 东莞网站设计智能 乐云践新seo排名助手
  • 网站怎么做图片转链桂平seo快速优化软件
  • 郴州必去三个景点天津seo网站推广
  • 网站制作的公网络营销的现状及问题
  • 赣州网站建设 赣州网页设计线上怎么做推广和宣传