问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么用java实现驼峰命名法与数据库命名法的相互转换

发布网友 发布时间:2022-04-07 05:47

我来回答

4个回答

热心网友 时间:2022-04-07 07:17

手敲的,给个辛苦分吧。。。




package test;

import java.util.ArrayList;
import java.util.List;

public class Test {

public static void main(String[] args) {
//testing for data base column-key to java field
String[] dbKeys = {"id", "user_age", "user_addr_"};
Test t = new Test();
t.convertToJava(dbKeys);
System.out.println("-----------------------------------");
//testing for Java field to data base column-key
String javaFieldNames[] = {"id","userAge","userHomeAddr"};
t.getDBKey(javaFieldNames);
}


/*
 * Java field to data base column-key
 */

private void getDBKey(String... javaFieldNames){
if(javaFieldNames != null && javaFieldNames.length > 0){
for(String name : javaFieldNames){
StringBuffer buffer = new StringBuffer();
char[] array = name.toCharArray();
List<Integer> insertIndexes = new ArrayList<>();
for(int i=0;i<array.length;i++){
Character c = array[i];
if(i != 0 && Character.isUpperCase(c)){
insertIndexes.add(i);
}
}
if(insertIndexes.size() > 0){
int flag = 0;
for(int j=0;j<insertIndexes.size();j++){
String word = toLowercase4FirstLetter(name.substring(flag, insertIndexes.get(j)));
buffer.append(word).append("_");
flag = insertIndexes.get(j);
}
String last = toLowercase4FirstLetter(name.substring(flag));
buffer.append(last);
System.out.println(buffer.toString());
} else {
System.out.println(name);
}
}
}
}

private String toLowercase4FirstLetter(String word){
if(word != null && word.length() > 0){
String firstLetter = word.substring(0,1);
String others = word.substring(1);
return firstLetter.toLowerCase() + others;
}else{
return "";
}
}

/*
 * data base column-key to java field
 */
public void convertToJava(String... dbKeys) {
if(dbKeys != null && dbKeys.length > 0){
for(String key : dbKeys){
String[] words = key.split("_");
String result = toUppercase4FirstLetter(words);
System.out.println(result);
}
}
}

private String toUppercase4FirstLetter(String... words){
StringBuffer buffer = new StringBuffer();
if(words != null && words.length > 0){
for(int i=0;i<words.length;i++){
String word = words[i];
String firstLetter = word.substring(0, 1);
String others = word.substring(1);
String upperLetter = null;
if(i != 0){
upperLetter = firstLetter.toUpperCase();
} else {
upperLetter = firstLetter;
}
buffer.append(upperLetter).append(others);
}
return buffer.toString();
}
return "";
}

}

热心网友 时间:2022-04-07 08:35

驼峰命名就是除首单词外后面单词第一个字符大写,根据数据库命名法规则,获取到一个名字时先判断是表名还是什么,然后根据对应的规则剪切拼接字符就可以了。

热心网友 时间:2022-04-07 10:09

如果用mybatis可以直接转换的。

热心网友 时间:2022-04-07 12:01

请教一下,数据库命名法是怎么命名的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
提升学历选自考好还是成考好 成考和自考的文凭哪个好 2024年成人自考和成人高考哪个更好 家用净水器滤芯类型有哪些 家用净水器什么滤芯好 请问在VB中如何调用多线程? 交强险理赔后第二年上涨吗? 交强险出一次险第二年保费多出多少? 全家人都爱吃的家常菜目录 丽台Quadro P5000专业图形显卡-购买最佳价格 消防职业技能培训都涉及到哪些内容啊,会有体能测试吗? 消防培训技能测试多少分合格 读好书 习美德 立良行为主题作文800字 你都读过哪些书?以读书为话题的作文。 我的读书生活,为话题的作文800字 为什么要读书800字作文 关于读书的作文800 以读书为话题800字以上作文拜托了各位 谢谢 买二手房原厨房的大理石灶是否得换过 企业年金能买保险吗 哪里有无收缩灌浆料的购销合同 年金自己交170元单位交多少 租赁农村河滩地的合同,该怎么拟定? 毛胚房交房注意事项 如果辞职了,还能继续交纳单位的企业年金吗?意思是说个人缴全部。 按揭购房,已经开始还房贷半年了,可是自从签完字之后就再也没有见过我的购房合同 买房签了无效合同可以要求开发商赔偿装修费吗 单位缴的企业年金是归员工本人吗? 我的问题。急~~ 住房装修合同中的定金约定比例一般是多少? 求职业技能培训数控加工中心试题 圆通速递违禁品知识技能培训考试 12333上海劳动保障没有通过*补贴的技能测试怎么办.是否可以进行下一个不同项目的技能培训? 各类作业人员应接受相应的安全生产教育和岗位技能培训 经考试合格上岗 是对是错 跨境电子商务专业技能培训考试成绩查询 春季高考培训技能考试能考多少分?难不难? 心理咨询师考试的技能考试 住院医师规范化培训临床技能考核 2022年湘南幼儿师范专科学校职业技能测试学期教育考哪一些 两次同样的梦,梦见受伤的小狗,从腰背部皮毛拦腰断裂,左腿臀部以下也都裂开,但没流血,小狗还活着 梦见丢失的狗还活着 梦见自己杀了一只黑狗给他卸了腿它还活着是啥意思? 梦见把狗肚子剖开了,狗又死了 梦见狗死了,还被八皮了 天天吃米饭对身体好吗 米饭必须天天吃吗?吃米饭有什么好处,可以用别的主食代替吗? 中恒信合(厦门)融资租赁有限公司怎么样? 中恒融资租赁(深圳)有限公司怎么样? 四川中恒汇信金融服务外包有限公司怎么样? 北京中恒合信投资有限公司怎么样?