在项目开发中常常会看见一些下拉框选项,比如性别、人员学历等等。这些都是通过数据字典表来维护的,即在数据库创建一个数据字典表,将数据分类和详细信息保存在一张表中,实现无限极树形节点,实现基于global的查询。
数据字典的作用:
- 贯穿系统的所有数据项,开发过程中,动态的维护系统数据项。如下图,左侧数据字典编辑页面维动态维护右侧各下拉框选项:
- 保证数据的录入安全,业务表使用数据字典的时候,存放的是数据项的编号,而不是数据项的值:
- 方便系统的统计
数据库的设计:
#数据字典CREATE TABLE Elec_SystemDDL( SeqID INT NOT NULL, #主键ID(自增长) Keyword VARCHAR(20) NULL, #数据类型 DdlCode INT NULL, #数据项的code DdlName VARCHAR(50) NULL #数据项的value)
创建相应JavaBean和xml映射文件:
1.创建Elec_SystemDDL.java文件
@SuppressWarnings("serial")public class ElecSytemDDL implements Serializable{ private Integer seqID; private String keyword; private Integer ddlCode; private String ddlName; public Integer getSeqID() { return seqID; } public void setSeqID(Integer seqID) { this.seqID = seqID; } public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public Integer getDdlCode() { return ddlCode; } public void setDdlCode(Integer ddlCode) { this.ddlCode = ddlCode; } public String getDdlName() { return ddlName; } public void setDdlName(String ddlName) { this.ddlName = ddlName; } }
2.创建对应的hbm.xml文件 ElecSystemDDL.hbm.xml
3.在hibernate.cfg.xml文件中添加:
创建DAO接口及其实现类:
1.创建DAO接口: IElecSystemDDLDao.java
public interface IElecSystemDDLDao extends ICommonDao{ public static final String SERVICE_NAME="cn.elec.dao.imp.ElecSystemDDLImpl";}
2.创建实现类:ElecSystemDDLDaoImpl.java
/** * @Repository * 相当于在spring中定义:*/@Repository(IElecSystemDDLDao.SERVICE_NAME)public class ElecSystemDDLDaoImpl extends CommonDaoImpl implements IElecSystemDDLDao{}
创建Service接口及实现类:
1.创建Service接口:IElecSystemDDLService.java
public interface IElecSystemDDLService { public static final String SERVICE_NAME="com.elec.service.impl.ElecSystemDDLServiceImpl";}
2.创建实现类:ElecSystemDDLServiceImpl.java
//事务控制:spring的声明事务处理,在service层添加@Transactional@Service(IElecSystemDDLService.SERVICE_NAME)@Transactional(readOnly=true)public class ElecSystemDDLServiceImpl implements IElecSystemDDLService { /*数据字典Dao*/ @Resource(name=IElecSystemDDLDao.SERVICE_NAME) IElecSystemDDLDao elecSystemDDLDao;}
创建Action类:ElecSystemDDLAction.java
public class ElecSystemDDLAction extends BaseAction{ ElecSystemDDL elecSystemDDL=this.getModel(); //注入数据字典service @Resource(name=IElecSystemDDLService.SERVICE_NAME) IElecSystemDDLService elecSystemDDLService; /** * @Name: home * @Description: 跳转到数据字典页面 * @Parameters: 无 * @Return: String:跳转到system/dictionaryIndex.jsp */ public String home(){ return "home"; }}
其中BaseAction是对泛型实例化方法进行封装的类。
配置struts.xml:
/WEB-INF/page/system/dictionaryIndex.jsp
修改script/menuDate.js中的url:
{ mid:'aq', pid:'am', name:'数据字典维护', icon:'../images/MenuIcon/shujuzidianguanli.gif', target:'mainFrame', /*url:'../system/dictionaryIndex.jsp',*/ url:'../system/elecSystemDDLAction_home.do', isParent:false}
启动Tomcat服务器,页面展示: