Java实现驼峰下划线互转的使用示例

 更新时间:2023年12月06日 09:21:43   作者:檀越剑指大厂  
驼峰和下划线互转场景是在不同命名规范的情况下,需要进行字段名称的转换,本文就来介绍一下Java实现驼峰下划线互转的使用示例,感兴趣的可以了解一下

一.需求背景

1.背景

驼峰和下划线互转场景是在不同命名规范的情况下,需要进行字段名称的转换。例如,Java 中使用驼峰命名规范,而数据库表字段通常使用下划线命名规范。

2.实现方式

  • 使用 GuavaAPI 实现
  • 使用 hutool 工具类实现
  • 使用自定义的工具实现
  • 使用正则表达式实现

3.注意事项

对于驼峰和下划线的互转,需要注意以下几点:

  • 确定转换方向:在进行驼峰和下划线的互转时,首先需要确定是将驼峰转为下划线,还是将下划线转为驼峰。
  • 字符串格式:要进行驼峰和下划线的转换,需要保证字符串的格式符合规范。驼峰命名法中,单词间没有分隔符,首字母小写;下划线命名法中,单词间使用下划线分隔,全小写。
  • 字符串处理:对于将驼峰转为下划线,可以使用正则表达式或字符串处理方法,将大写字母前插入下划线,并将字符串转为小写。对于将下划线转为驼峰,可以使用字符串处理方法,将下划线后的字母转为大写,并去掉下划线。
  • 命名规范:在进行驼峰和下划线的互转时,要遵循统一的命名规范,以保证代码的可读性和一致性。
  • 注意冲突:在进行驼峰和下划线的互转时,要注意可能存在的命名冲突。有些字符串可能无法准确转换为驼峰或下划线命名,可能会引起命名冲突或歧义。

在进行驼峰和下划线的互转时,要谨慎处理,遵循规范,确保转换的准确性和可靠性。

二.实现方式

1.Guava 实现

Gauva:

//驼峰转下划线
String ans = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, "helloWorld");
System.out.println(ans);
//下划线转驼峰
String ans2 = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "hello_world");
System.out.println(ans2);

实战:

//排序:驼峰转下划线
String sortname = query.getSortname();
if (StringUtils.isNotEmpty(sortname)) {
    try {
        BrandStoreSkuInvSalRateWeekDTO.class.getField(sortname);
        sortname = CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, sortname);
        query.setSortname(sortname);
    } catch (NoSuchFieldException e) {
        log.error("排序字段不存在,排序字段为{}", sortname);
        query.setSortname(null);
    }
}

2.hutool 实现

Hutool:

String ans = StrUtil.toCamelCase("hello_world");
System.out.println(ans);
String ans2 = StrUtil.toUnderlineCase("helloWorld");
System.out.println(ans2);

3.自定义

工具类:

public class ColumnUtil {
    private static Pattern humpPattern = Pattern.compile("[A-Z]");
    private static Pattern linePattern = Pattern.compile("_(\\w)");
    /**
     * 驼峰转下划线
     * @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 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();
    }
}

4.mybatis-plus

  • mybatis-plus 中的使用下划线和驼峰互转
  • map-underscore-to-camel-case 设置为 true
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true

到此这篇关于Java实现驼峰下划线互转的使用示例的文章就介绍到这了,更多相关Java 驼峰下划线互转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 深入了解Spring Boot2.3.0及以上版本的Liveness和Readiness功能

    深入了解Spring Boot2.3.0及以上版本的Liveness和Readiness功能

    这篇文章主要介绍了Spring Boot2.3.0及以上版本的Liveness和Readiness功能示例深入解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • java中使用session监听实现同帐号登录限制、登录人数限制

    java中使用session监听实现同帐号登录限制、登录人数限制

    本文主要介绍了java中使用session监听实现同帐号登录限制、登录人数限制,通过session来监听在线人数和登陆限制,有需要的童鞋可以了解一下。
    2016-10-10
  • springboot 定时任务@Scheduled实现解析

    springboot 定时任务@Scheduled实现解析

    这篇文章主要介绍了springboot 定时任务@Scheduled实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Maven默认中央仓库(settings.xml 配置详解)

    Maven默认中央仓库(settings.xml 配置详解)

    这篇文章主要介绍了Maven默认中央仓库(settings.xml 配置详解),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 关于maven的用法和几个常用的命令

    关于maven的用法和几个常用的命令

    这篇文章主要介绍了关于maven的用法和几个常用的命令,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • 一文详解如何从零构建Spring Boot Starter并实现整合

    一文详解如何从零构建Spring Boot Starter并实现整合

    Spring Boot是一个开源的Java基础框架,用于创建独立、生产级的基于Spring框架的应用程序,这篇文章主要介绍了如何从零构建Spring Boot Starter并实现整合的相关资料,需要的朋友可以参考下
    2025-03-03
  • 解决在IDEA中创建多级package的问题

    解决在IDEA中创建多级package的问题

    这篇文章主要介绍了解决在IDEA中创建多级package的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 浅谈Spring Data如何简化数据操作的方法

    浅谈Spring Data如何简化数据操作的方法

    这篇文章主要介绍了看Spring Data如何简化数据操作的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • mybatis返回类型map时如何将key大写转为小写

    mybatis返回类型map时如何将key大写转为小写

    这篇文章主要介绍了mybatis返回类型map时实现将key大写转为小写操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 基于Java回顾之多线程详解

    基于Java回顾之多线程详解

    在这篇文章里,我们关注多线程。多线程是一个复杂的话题,包含了很多内容,这篇文章主要关注线程的基本属性、如何创建线程、线程的状态切换以及线程通信,我们把线程同步的话题留到下一篇文章中
    2013-05-05

最新评论