Java操作mysql字段转换驼峰并加别名

该博客介绍了一个Java工具类,用于将MySQL查询语句中的字段从下划线命名转换为驼峰命名,并添加表别名。通过正则表达式实现字符串转换,支持批量处理SQL字段并打印转换结果。适用于数据库交互和数据操作场景。
摘要由CSDN通过智能技术生成

TOC

Java操作mysql字段转换驼峰并加别名

整合了部分转换驼峰的代码,另外加上加别名的功能。

工具类代码

代码

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MysqlAliasUtils {

    private static final Pattern UNDERLINE_PATTERN = Pattern.compile("_([a-z])");
    private static final Pattern FIRST_UPPERCASE = Pattern.compile("([a-z])");

    public static void main(String[] args) {
       

        String sql="id,sku_id,spu_id,category,create_ts,update_ts,delete_flag";
        String alias="good";

        sql=setMysqlAlias(sql,alias);
    }


    
    /**
     * 转换字段为驼峰格式并加上表别名,表别名格式可自己调整
     * @param sql
     * @param alias
     * @return
     */
    private static String setMysqlAlias(String sql, String alias) {
        if(sql==null||!sql.contains(",")||alias==null){
            return null;
        }

        StringBuilder result= new StringBuilder();
        String[] split = sql.split(",");

        List<String> sqlColumnList = Arrays.asList(split);

        List<String>firstUppercaseStrList=new ArrayList<>();

        for (int i = 0; i < sqlColumnList.size(); i++) {
            String s = sqlColumnList.get(i);
            String underlineToHumpStr = underlineToHump(s);
            String firstUppercaseStr = firstUppercase(underlineToHumpStr);
            s=","+alias+"."+s+" "+alias+firstUppercaseStr;
            sqlColumnList.set(i,s);
            result.append(s);
            firstUppercaseStrList.add(alias+firstUppercaseStr);
        }
        //System.out.println(sqlColumnList);
        //result需要去掉最前面的逗号
        System.out.println(result);
        System.out.println(firstUppercaseStrList);



        return result.toString();
    }
/**
     * 根据传入的带下划线的字符串转化为驼峰格式
     * @param str
     * @author mrf
     * @return
     */
    public static String underlineToHump (String str){
        //正则匹配下划线及后一个字符,删除下划线并将匹配的字符转成大写
        Matcher matcher = UNDERLINE_PATTERN.matcher(str);
        StringBuffer sb = new StringBuffer(str);
        if (matcher.find()) {
            sb = new StringBuffer();
            //将当前匹配的子串替换成指定字符串,并且将替换后的子串及之前到上次匹配的子串之后的字符串添加到StringBuffer对象中
            //正则之前的字符和被替换的字符
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
            //把之后的字符串也添加到StringBuffer对象中
            matcher.appendTail(sb);
        } else {
            //去除除字母之外的前面带的下划线
            return sb.toString().replaceAll("_", "");
        }
        return underlineToHump(sb.toString());
    }

    /**
     * 将传入的驼峰字段字符串首字母转为大写
     * @param str
     * @return
     */
    public static String firstUppercase(String str){
        Matcher matcher = FIRST_UPPERCASE.matcher(str);
        StringBuffer sb = new StringBuffer(str);
        if (matcher.find()) {
            sb = new StringBuffer();
            //将当前匹配的子串替换成指定字符串,并且将替换后的子串及之前到上次匹配的子串之后的字符串添加到StringBuffer对象中
            //正则之前的字符和被替换的字符
            matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
            //把之后的字符串也添加到StringBuffer对象中
            matcher.appendTail(sb);
        } else {
            return sb.toString();
        }
        return underlineToHump(sb.toString());
    }


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值