JAVA字典 JAVA项目字典与缓存搭配使用方法解析
海绵般汲取 人气:4字典数据是什么?
这里说了字典不是软件工程中说的数据字典。
字典数据:用于动态设置某对象的属性是属于在一个可列举的数据范围内的某一类型数据,使用字典类型作为该类别属性的唯一标识
如:用户类型:学生,老师,家长,校长等
有什么作用?
字典数据由两个表组成:字典类型表 dict_type,字典类型数据表 dict_data
这个数据相当于java中的枚举类,可以被使用于前端的数据展示,下拉框数据集使用。
没有数据字典时业务操作方法:
定义学生枚举类,在代码中使用枚举类的key进行数据保存,在查询数据后,转换key对应的中文名称label标签返回给前端。
缺点:如新增用户类型,修改学生类型对应中文名称时,需要修改代码。
使用字典时业务操作方法。
后端业务数据存储的是字典类型的key值,即label标签表示学生类型对应的key值 student,
新增数据时前端通过下拉菜单获取学生类型某一个类型key进行新增,查询数据时根据字典数据表的用户类型作为下拉框查询条件选择。
优点:当key为student的数据中文名称发生改变时,不需要后端进行代码修改。
如新增用户时,设置用户的类型,下拉框的数据可以从数据库获取数据,不用前端关心数据集的内容,
在业务中使用
不使用缓存的方式使用字典数据:
业务中使用方式,返回用户列表数据,将用户类型的字典数据从数据库中查询出来,然后进行转换。
在前端查询数据时,前端查询用户类型的下拉数据集,作为条件,传类型key值作为查询条件查询数据。
与缓存搭配使用字典数据。
自己控制数据缓存。灵活性高:Ehcache,Redis等内存缓存框架进行处理。
如果是单机项目。可以使用内存缓存。
缓存的使用方式有多种:
如使用Mybatis自带的一级缓存,二级缓存。但如果使用的是不同的SqlSession进行数据查询,这不会用到一级缓存。
单机项目最好还是使用内存缓存框架,如Ehcache,用Map来存储所有字典数据。在更新字典数据后,直接整个更新缓存数据。
{ "字典类型": [ { "key": "label" } ] }
如果是分布式(虽然没实际用过):可以使用redis这种外置的非关系型数据库存储缓存数据。即一个类型一个key来存储数据。如
RedisUtils.put( "dict:type_user_type" ) RedisUtils.get( "dict:type_user_type" )
加载全部内容