mysql为什么不驼峰_为什么不用驼峰命名创建表名和字段?

时间: 2023-09-06 10:08:39 浏览: 61
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中并返回。

相关推荐

文件(E)编辑(E) 视图(M) 导航(N) 代码(C) 重构(R) 构建(B) 运行(山) 工具(I) Git(G) 窗口W) 帮助(H) 瑞 吉外卖[D:\瑞吉外卖] - applicationyml [untitled] 吊截图工具 里▼人L临Application▼>在CC▼■|Git(G);kV入+0。 吊新建(N) 模式M)▼C 3延迟(D) ▼X取消(Q) 瑞吉外卖〉 untitled ) src ) main ) resources ) 6 application.yml 项目 朵王云交-Cotoller.java X C SetmealContoller.java ShopingCarContollerjava xe UserConrtollerjava xm pom.xml (ntited)使用’模式'按钮选择截图模式,或单击新建’按钮。 java spring: 截图工具正在移动.. 口com D itheima application: 在将来的更新中,截图工具将移到新的家。尝试改进的功 v D common #设置开发当前应用的名称 使用截图和草图(&S)(或尝试快捷方式Windows徽标键 9 BaseCantext name: reggie_ _take_ out Shift + S)像往常一样进行截图。 P CustomException 。GlobalExceptionHandler datasource: #设置数据源以及连接配置 试用”截图和草图” 。JacksonObjectMapper druid: MyMetaObjecthandler driver- cLass-name: com . mysqL. cj. jdbc . Driver b config 1 urL: jdbc:mysqL://locaLhost:3306/ ruiji?serverTimezone=Asia/ Shanghai&useUnicode=true&characterEncoding=utf MybatisPlusConfig username: root RedisConfig 3 password: jqL1*9700 O WebMvcConfig 4 redis: v D controller C AddresBookController 5 host: 192. 168.200.129 #ip CategoryController 6 port: 6379 #端口 CommonController 9 DishController 17 password: root@123456 #密码 没设密码的话不用写 ◎EmployeeController 8 database: 0 #连接数 ◎OrderController 9 OrderDetailController 9 SetmealController 0 mybatis -pLus: 9 ShoppingCartController 21 configuration: 9 UserController 2 #在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射 ,. entity map-underscore-to- camel-case: true #设置为truel时t:可以用驼峰命名法->->->数据库 表名为xaddress_ book ,那么实 9 AddressBook 4 Log- impL: org. apache . ibatis . Logging. stdout. Stdout ImpL #控制台打印sqL日志 Category 25 gLobaL-config: Dish 。DishFlavor 26 db-config: Employee 7 id-type: ASSIGN_ ID #配置 主键生成策略 OrderDetail Document1/1 ) spring: 》 redis: , password: ) root@ 123456 a Arderc pGit>运行三TODO0问题CProfiler之Dependencies2终端八端点人构建.Spring a事件日志 构建大014三小tceth二中11八幼之的 17.00.cnirutr。,入六坡量110 构建车25 18:28 0n果 O回后x中 2023/3/10

public void testSimpleImportBuilder(){ DB2ESImportBuilder importBuilder = DB2ESImportBuilder.newInstance(); try { //清除测试表数据 ElasticSearchHelper.getRestClientUtil().dropIndice("dbclobdemo"); } catch (Exception e){ } //数据源相关配置,可选项,可以在外部启动数据源 importBuilder.setDbName("test") .setDbDriver("com.mysql.jdbc.Driver") //数据库驱动程序,必须导入相关数据库的驱动jar包 .setDbUrl("jdbc:mysql://localhost:3306/bboss?useCursorFetch=true") //通过useCursorFetch=true启用mysql的游标fetch机制,否则会有严重的性能隐患,useCursorFetch必须和jdbcFetchSize参数配合使用,否则不会生效 .setDbUser("root") .setDbPassword("123456") .setValidateSQL("select 1") .setUsePool(false);//是否使用连接池 //指定导入数据的sql语句,必填项,可以设置自己的提取逻辑 importBuilder.setSql("select * from td_cms_document"); /** * es相关配置 */ importBuilder .setIndex("dbclobdemo") //必填项 .setIndexType("dbclobdemo") //必填项 .setRefreshOption(null)//可选项,null表示不实时刷新,importBuilder.setRefreshOption("refresh");表示实时刷新 .setUseJavaName(true) //可选项,将数据库字段名称转换为java驼峰规范的名称,例如:doc_id -> docId .setBatchSize(5000) //可选项,批量导入es的记录数,默认为-1,逐条处理,> 0时批量处理 .setJdbcFetchSize(10000);//设置数据库的查询fetchsize,同时在mysql url上设置useCursorFetch=true启用mysql的游标fetch机制,否则会有严重的性能隐患,jdbcFetchSize必须和useCursorFetch参数配合使用,否则不会生效 /** * 执行数据库表数据导入es操作 */ DataStream dataStream = importBuilder.builder(); dataStream.execute(); }

最新推荐

recommend-type

Java_带有可选web的开源命令行RatioMaster.zip

Java_带有可选web的开源命令行RatioMaster
recommend-type

基于MATLAB实现的GA算法解决车辆调度问题VRP+使用说明文档.rar

CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的GA算法解决车辆调度问题VRP+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
recommend-type

小程序源码-平安保险小程序.zip

小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序小程序源码-平安保险小程序
recommend-type

数据库查看工具网页版本

数据库查看工具网页版本
recommend-type

grpcio-1.46.5-cp38-cp38-linux_armv7l.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】MATLAB用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。