将Bean对象的字段变量驼峰互转

JAVA开发 workingTime 465℃ 0评论

注意:JavaBean实体对象的命名必须使用驼峰命名,这是规范。
场景:

- 数据库表转实体类时,表中“_”字段转驼峰。
- 在请求某些恶心的接口时,接口中的字段是非驼峰命名的。

代码:


/**
     * 下划线转驼峰
     * @param str
     * @return
     */
    public static String lineToHump(String str) {
        str = str.toLowerCase();
        Matcher matcher = linePattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

    private static Pattern humpPattern = Pattern.compile("[A-Z]");

    /**
     * 驼峰转下划线
     * @param str
     * @return
     */
    public static String humpToLine(String str) {
        Matcher matcher = humpPattern.matcher(str);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
        }
        matcher.appendTail(sb);
        return sb.toString();
    }

/**
     * 反射对象字段
     * @param obj
     * @return
     */
    public static Map<String , Object> getHumpMap(Object obj) {
        Class<?> bindClass = obj.getClass();
        Map<String  , Object> objMap = new HashMap<>(0);

        /*
        * 得到类中的所有属性集合
        */
        try {
            Field[] fs = bindClass.getDeclaredFields();
            for(Field f : fs){
                //设置些属性是可以访问的
                f.setAccessible(true);
                objMap.put(humpToLine(f.getName()) , f.get(obj));
            }
        } catch (IllegalAccessException e) {
            System.out.println(e.getMessage());
        }
        return objMap;
    }

转载请注明:R&M » 将Bean对象的字段变量驼峰互转

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

联系我:rm@rmworking.com