项目中加入字典表

创建一个字典项的annotation注解

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DictsValue {
    String value() default "";
}

在需要用上字典项的实体类的属性上加上注解


    @DictsValue("color")
    private String gcolor;

字典项的service层,用于处理对象中的字典数字转换为字典表中存的数据

@Override
    public void caseDictCode2Label(List datas) throws Exception {
        for (Object data : datas) {
            Class<?> clz = data.getClass();
            Field[] fields = clz.getDeclaredFields();//[gid,gname,gcolor,gprice]
            //遍历对象中的所有成员变量
            for (Field field : fields) {
                //这里说明变量上有DictsValue注解,该变量需要转译
                //由于成员变量是private修饰,不能通过反射来修改成员变量的值,.setAccessible(true)使field可以被直接修改
                field.setAccessible(true);

                //判断成员变量上有没有DictsValue注解
                DictsValue dv = field.getAnnotation(DictsValue.class);
                if(dv==null)
                    continue;

                //得到变量上的DictsValue注解的value属性值
                String dtype = dv.value();//color
                //得到data对象中的feild的值
                String dcode = (String)field.get(data);//1

                //去字典表中根据dtype和dcode得到一个字典对象
                Sysdicts d = getSysdictsByTypeAndCode(dtype,dcode);
                //拿到需要转译的汉字值
                String dname = d.getDname();//红色
                //对成员变量进行转移重新赋值
                field.set(data,dname);
            }
        }
    }

@Override
    public Sysdicts getSysdictsByTypeAndCode(String dtype, String dcode) {
    //去字典表中根据dtype和dcode得到一个字典对象
        Sysdicts result= dm.selectDicts(dtype,dcode);
        return result;
    }

调用字典项的service

@Override
    public List<Goods> selectGoods(Goods g) throws Exception {
    //从数据库中查询需要通过字典项转换的数据
        List<Goods> goodsList = gm.selectGoods(g);
        //字典项的转译工作
        ds.caseDictCode2Label(goodsList);

        return goodsList;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值