package com.example.test;

import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

/**
 * @Author leo
 * @Date 2024/3/6 19:05
 * @description: java 把实体类中所有驼峰命名字段转下划线
 * @Title: EntityFieldConverterUtil
 * @Package org.jeecg.modules.yygl.dbwgl.utils
 */
public class EntityFieldConverterUtil {
    public static String camelCaseToSnakeCase(String camelCase) {
        StringBuilder snakeCase = new StringBuilder();
        for (int i = 0; i < camelCase.length(); i++) {
            char c = camelCase.charAt(i);
            if (Character.isUpperCase(c)) {
                snakeCase.append("_");
            }
            snakeCase.append(Character.toLowerCase(c));
        }
        return snakeCase.toString();
    }

    public static List<String> convertFieldsToSnakeCase(Object entity) {
        Class<?> clazz = entity.getClass();
        Field[] fields = clazz.getDeclaredFields();
        List<String> snakeCaseFieldNames = new ArrayList<>();

        for (Field field : fields) {
            String camelCaseFieldName = field.getName();
            String snakeCaseFieldName = camelCaseToSnakeCase(camelCaseFieldName);
            snakeCaseFieldNames.add(snakeCaseFieldName);
        }

        return snakeCaseFieldNames;
    }
    public static void main(String[] args) {
        MyEntity entity = new MyEntity();
        List<String> snakeCaseFieldNames = convertFieldsToSnakeCase(entity);

        // 处理返回的列表,比如打印出来  
        for (String fieldName : snakeCaseFieldNames) {
            System.out.println(fieldName);
        }
    }
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐