mysql为什么不驼峰_为什么不用驼峰命名创建表名和字段?
时间: 2023-09-06 15:08:39 浏览: 215
MySQL 采用下划线命名法(也称为蛇形命名法)来创建表名和字段,而不使用驼峰命名法,这是因为历史原因和惯例。
MySQL 最初是在 Unix 系统上开发的,而 Unix 系统中的文件名和变量名通常使用小写字母和下划线。MySQL 开发者为了遵循 Unix 的惯例,决定采用下划线命名法来创建表名和字段。
此外,MySQL 的下划线命名法还有一个好处,就是可以更清晰地区分单词,增加可读性。相比之下,驼峰命名法可能会导致单词混淆和歧义。
当然,这并不意味着 MySQL 不能使用驼峰命名法,如果你愿意,完全可以在 MySQL 中使用驼峰命名法,只不过不是 MySQL 的默认命名方式罢了。
相关问题
MySQL的字段名为什么不用驼峰命名
MySQL的字段名可以使用驼峰命名法或下划线命名法,这并没有特别的限制。但是,通常建议使用下划线命名法,因为MySQL默认是不区分字段名的大小写的,这就可能导致驼峰命名法的字段名在不同的操作系统或不同的MySQL版本中被解释为不同的字段名,而产生混淆和错误。因此,为了避免这种情况,一般建议使用下划线命名法来命名MySQL的字段名。
但是Mysql里的字段是通过“_”来命名的,JavaBean的属性都是驼峰式命名,请生成一段代码:对jdbc里的resultSet转换为Java对象
如果MySQL中的字段是下划线命名法,而JavaBean的属性是驼峰式命名,可以使用以下代码将ResultSet转换成Java对象:
```java
public <T> List<T> resultSetToObjects(ResultSet rs, Class<T> clazz) throws SQLException, IllegalAccessException, InstantiationException {
List<T> objects = new ArrayList<>();
ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
Field[] fields = clazz.getDeclaredFields();
Map<String, Field> fieldMap = new HashMap<>(fields.length);
for (Field field : fields) {
String name = field.getName();
fieldMap.put(name, field);
}
while (rs.next()) {
T object = clazz.newInstance();
for (int i = 1; i <= columnCount; i++) {
String columnName = metaData.getColumnName(i);
String fieldName = convertToCamelCase(columnName);
Field field = fieldMap.get(fieldName);
if (field == null) {
continue;
}
field.setAccessible(true);
Object value = rs.getObject(i);
field.set(object, value);
}
objects.add(object);
}
return objects;
}
private String convertToCamelCase(String columnName) {
StringBuilder sb = new StringBuilder();
boolean nextUpperCase = false;
for (int i = 0; i < columnName.length(); i++) {
char ch = columnName.charAt(i);
if (ch == '_') {
nextUpperCase = true;
} else {
if (nextUpperCase) {
sb.append(Character.toUpperCase(ch));
nextUpperCase = false;
} else {
sb.append(Character.toLowerCase(ch));
}
}
}
return sb.toString();
}
```
在上面的代码中,我们使用了ResultSetMetaData来获取ResultSet中的列数和列名,然后使用convertToCamelCase方法将列名转换成JavaBean属性名。接着,我们使用反射获取JavaBean中的所有属性,并将它们存储到一个Map中,其中属性名作为Map的键。在遍历ResultSet时,我们将每一行数据都转换成JavaBean对象,然后遍历ResultSet中的每一列,将列名转换成JavaBean属性名,并使用反射将列值赋给JavaBean对象的属性。最后,将JavaBean对象添加到List中并返回。
阅读全文