把对象按照{@link ToUeProperty}注解转换
+ * 字段值为空不输出 + * + * @param obj 要转换的对象 + * @return 转换后的值以Map返回 + */ + public static Map把对象按照注解转换
+ * 字段值为空不输出 + * + * @param obj 要转换的对象 + * @return 转换后的值toJson以String返回 + */ + public static String getToUeStr(Object obj) { + return JsonUtil.obj2Json(getUnderlineMap(obj, true, false)); + } + + /** + *把对象驼峰字段转换成下划线输出,支持继承和字段类型为对象
+ * 字段值为空不输出 + * + * @param obj 要转换的对象 + * @return 转换后的值以Map返回 + */ + public static Map把对象驼峰字段转换成下划线输出,支持继承和字段类型为对象
+ * 字段值为空不输出 + * + * @param obj 要转换的对象 + * @return 转换后的值toJson以String返回 + */ + public static String getUnderlineStr(Object obj) { + return JsonUtil.obj2Json(getUnderlineMap(obj, true, false)); + } + + /** + * 把对象字段按{@link ToUeProperty}注解规则转换输出,支持继承和字段类型为对象 + * + * @param obj 要转换的对象 + * @param isAnnotationAll 是否全部依赖注解转换。全部依赖注解转换:true 只有字段上有注解的才转换,没有注解的默认不转换;false 有注解的依照注解转换,没有的全传下划线 + * @param putNull 是否映射null + * @return 转换后的值toJson以String返回 + */ + public static String getUnderlineStr(Object obj, boolean isAnnotationAll, boolean putNull) { + return JsonUtil.obj2Json(getUnderlineMap(obj, isAnnotationAll, putNull)); + } + + /** + * 把对象字段按{@link ToUeProperty}注解规则转换成输出,支持继承和字段类型为对象 + *主要功能:解决输出时驼峰-下划线的转换
+ * + * @param obj 要转换的对象 + * @param isAnnotationAll 是否全部依赖注解转换。全部依赖注解转换:true 只有字段上有注解的才转换,没有注解的默认不转换;false 有注解的依照注解转换,没有的全传下划线 + * @param putNull 是否映射null + * @return + */ + public static Mapdiff --git a/src/main/java/com/yexuejc/base/util/StrUtil.java b/src/main/java/com/yexuejc/base/util/StrUtil.java index 9664005..55c07c2 100644 --- a/src/main/java/com/yexuejc/base/util/StrUtil.java +++ b/src/main/java/com/yexuejc/base/util/StrUtil.java @@ -366,4 +366,57 @@ public final class StrUtil { } return msg; } + + /** + * 下划线字符 + */ + public static final char UNDERLINE = '_'; + + /** + * 字符串下划线转驼峰格式 + * + * @param param 需要转换的字符串 + * @return 转换好的字符串 + */ + public static String underlineToCamel(String param) { + if (isEmpty(param)) { + return ""; + } + String temp = param.toLowerCase(); + int len = temp.length(); + StringBuilder sb = new StringBuilder(len); + for (int i = 0; i < len; i++) { + char c = temp.charAt(i); + if (c == UNDERLINE) { + if (++i < len) { + sb.append(Character.toUpperCase(temp.charAt(i))); + } + } else { + sb.append(c); + } + } + return sb.toString(); + } + + /** + * 字符串驼峰转下划线格式 + * + * @param param 需要转换的字符串 + * @return 转换好的字符串 + */ + public static String camelToUnderline(String param) { + if (isEmpty(param)) { + return ""; + } + int len = param.length(); + StringBuilder sb = new StringBuilder(len); + for (int i = 0; i < len; i++) { + char c = param.charAt(i); + if (Character.isUpperCase(c) && i > 0) { + sb.append(UNDERLINE); + } + sb.append(Character.toLowerCase(c)); + } + return sb.toString(); + } } diff --git a/src/main/java/com/yexuejc/base/util/ToUeProperty.java b/src/main/java/com/yexuejc/base/util/ToUeProperty.java new file mode 100644 index 0000000..4398c63 --- /dev/null +++ b/src/main/java/com/yexuejc/base/util/ToUeProperty.java @@ -0,0 +1,14 @@ +package com.yexuejc.base.util; + +import java.lang.annotation.*; + +@Target({ElementType.FIELD, ElementType.TYPE, ElementType.METHOD}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ToUeProperty { + /** + * 字段名,默认该字段转下划线 + * @return + */ + String value() default ""; +} \ No newline at end of file