eclipselink 数据库表命名规则 驼峰转下划线/表名转换
来源:互联网 发布:袜子属于淘宝哪个类目 编辑:程序博客网 时间:2024/06/06 04:47
最近公司做SAAS项目,以前用的数据源为c3p0,数据库表的命名规则为类名(驼峰)转为下划线。
比如:PersonMsg (类) 对应 表名 person_msg(表)
而现在公司用的是eclipselink做dao层操作。为了避免大量修改只能去看eclipselink是否有支持命名策略。
最后发现了终极boss《SessionCustomizer》,这个玩意。分享出来 ,以后不迷路。
public class SystemCustomizer implements SessionCustomizer {@Overridepublic void customize(Session session) throws Exception {Map<Class, ClassDescriptor> descs = session.getDescriptors();Collection<ClassDescriptor> descriptors = descs.values();for (ClassDescriptor desc : descriptors) {String fullClassName = desc.getJavaClassName();String className=Helper.getShortClassName(fullClassName);String tableName = camelToUnderline(className);Vector<String> tableNames = new Vector<String>();tableNames.add(tableName);desc.setTableNames(tableNames);updateMappings(desc, tableName);}}private void updateMappings(ClassDescriptor desc, String tableName) {for (DatabaseMapping mapping : desc.getMappings()) {if (mapping.isDirectToFieldMapping()) {DirectToFieldMapping directMapping = (DirectToFieldMapping) mapping;directMapping.getField().setTableName(tableName);}}}/** * 驼峰法转下划线 */ public static String camelToUnderline(String line){ if(line==null||"".equals(line)){ return ""; } line=String.valueOf(line.charAt(0)).toUpperCase().concat(line.substring(1)); StringBuffer sb=new StringBuffer(); Pattern pattern=Pattern.compile("[A-Z]([a-z\\d]+)?"); Matcher matcher=pattern.matcher(line); while(matcher.find()){ String word=matcher.group(); sb.append(word.toLowerCase()); sb.append(matcher.end()==line.length()?"":"_"); } return sb.toString(); }}
阅读全文
1 0
- eclipselink 数据库表命名规则 驼峰转下划线/表名转换
- java,下划线与驼峰命名转换
- js驼峰命名和下划线转换
- java下划线命名转驼峰命名
- 下划线分割的表名、字段名转驼峰的工具类
- 数据库表和字段名命名规则
- 驼峰式命名的字符串与数据库字段下划线大写方式的转换
- 驼峰命名法转下划线风格
- 下划线风格转驼峰命名法
- 字符串的下划线命名和驼峰命名转换
- 字符串的下划线命名和驼峰命名转换
- Java 驼峰与下划线的属性名互相转换
- Java 驼峰与下划线的属性名互相转换
- 下划线和驼峰转换
- Java 驼峰命名法转下划线命名法
- Java-驼峰命名与下划线命名互转
- java驼峰转下划线,下划线转驼峰
- ORACLE表名命名规则
- 在php中调用接口,传递数据
- jvm内存分析命令
- eclipse连接不上mysql Access denied for user 'root'@'localhost' (using password: YES)
- 杭电acm1789 Dong Homework again
- 二叉树的镜像
- eclipselink 数据库表命名规则 驼峰转下划线/表名转换
- appium混合测试 测试谷歌
- 关于测试分类的整理
- springmvc.xml(WEB-INF)
- 程序人生的甘与苦
- 1059. C语言竞赛(20)
- 经验分享:双系统下丢失OS X系统引导的修复方法
- UVA11367 最短路 蓝书练习题
- android 打造真正的下拉刷新上拉加载recyclerview(一):使用