-
Notifications
You must be signed in to change notification settings - Fork 8
07.panda dictionary
panda的字典模块包括两部分,panda-dictionary和panda-dictionary-ui,其中panda-dictionary包含了通用的基础类,不依赖于dorado,而panda-dictionary-ui是基于dorado的一种实现。
字典几乎是系统的标配,实现的风格各种个样,但是主体结构是一样的,实现的难度不是很大,在dorado的项目中字典的实现优劣会极大影响开发的效率,为了统一风格,提高开发效率,减少重复开发,panda提供了一个比较好的选择。
字典模块一共包含两张表:字典表(panda_dictionary)和字典项表(panda_dictionary_item),一对多的关系。字典就是字典项的分类。字典是自关联的,字典自身是一个树型结构,字典项也是自关联的,也是树型结构。字典表有一个编码字段(code_),开发人员可以通过字典编码来获取编码对应的字典项。字典项包含键(key_)和值(value_)字段, 键用于存放到数据库,值用于对键的翻译,例如键=0,值=男;键=1,值=女。
@Autowired
private DictionaryService dictionaryService;
public interface DictionaryService {
/**
* 根据字典编码获取字典
* @param code 字典编码
* @return 字典
*/
Dictionary getDictionaryBy(String code);
/**
* 根据字典编码获取字典的默认字典项
* @param code 字典编码
* @return 字典项
*/
DictionaryItem getDefaultValueItemBy(String code);
/**
* 根据字典编码获取字典的默认字典项的值
* @param code 字典编码
* @return 字典项的值
*/
String getDefaultValueBy(String code);
/**
* 根据字典编码获取字典的所有字典项(包括字典项的子级字典项的树型结构)
* @param code 字典编码
* @return 所有字典项
*/
List<DictionaryItem> getDictionaryItemsBy(String code);
/**
* 根据字典项的键获取字典项
* @param key 字典项的键
* @return 字典项
*/
DictionaryItem getDictionaryItem(String key);
}
字典模块提供了一个dorado的EL表达式(不太了解dorado的EL表达式,请先去了解)上下文变量dict,通过dict,我们可以访问字典相关的服务方法。dict包含五个个方法,
- dict.items(code) 根据字典编码获取字典的所有字典项(包括字典项的子级字典项的树型结构)
- dict.defaultValue(code) 根据字典编码获取字典的默认字典项的值
- dict.defaultKey(code) 根据字典编码获取字典的默认字典项的键
- dict.defaultValueItem(code) 根据字典编码获取字典的默认字典项
- dict.item(code) 根据字典项的键获取字典项
var key = ${dict.defaultKey("xxx")};
大部分情况,我们的业务是通过下拉列表来展现字典项。假如我配了一个性别字典,字典编码为gender,字典包含两个字典项,1.键=0,值=男;2.键=1,值=女。然后,把DataType的性别的PropertyDef的mapValues设置成${dict.items("gender")}即可。进一步,我希望性别属性的默认值为gender字典的默认字典项的键,只需要将性别的PropertyDef的defaultValue设置为${dict.defaultKey('gender')}。