网站建设越来越便宜,作品提示优化要删吗,做网站高亮,企业解决方案除了思爱普一. 前言
最近耀哥有学生出去面试#xff0c;被问到 “Mybatis实体类的属性名和表中的字段名不一致该怎么处理#xff1f;”#xff0c;这其实是一个很经典的面试题#xff0c;接下来耀哥就为大家详细解析一下这道面试题。 二. 分析 2.1 实体类和字段名不一致所带来的后果…一. 前言
最近耀哥有学生出去面试被问到 “Mybatis实体类的属性名和表中的字段名不一致该怎么处理”这其实是一个很经典的面试题接下来耀哥就为大家详细解析一下这道面试题。 二. 分析 2.1 实体类和字段名不一致所带来的后果
为了讲清楚这个问题我们先来设计下面这样一个案例。
表的设计如下图所示 实体类如下图所示 mapper.xml文件如下所示 根据主键查询TbAccount对象的方法我们发现【只有数据库中的字段和实体类的属性名字对得上的字段才能被查出来】 那么以上的这个问题该怎么解决呢耀哥给大家提出了如下两种解决方案。 2.2 解决方案一将resultType替换为resultMap
我们需要先在mapper.xml文件中创建resultMap。 然后在mapper.xml文件的select方法节点中把resultType替换为resultMap。 再一次根据主键查询TbAccount对象的方法我们此时会发现即使【数据库的列名和实体类的属性名对不上的字段也能查出来了】 2.3 解决方案二配置下划线和驼峰的映射关系
第二种解决方案首先要在mybatis核心配置文件中添加下划线和驼峰的映射配置。 然后把mapper.xml文件中select查询节点中的resultMap再恢复成resultType。 再一次根据主键查询TbAccount对象的方法我们会发现【数据库的列名和实体类的属性名对不上的字段此时依然能查出来】 三. 结语
以前也经常有学生问耀哥[既然实体类的属性名和数据库的列名对不上会有问题那我们在创建实体类的时候让实体类的属性名跟数据库的字段名保持一致不就解决问题了吗]
其实这个事情是这样的现在所有的公司对于Java变量的命名规范和数据库列名的命名规范要求并不一致Java的变量命名规范是驼峰命名法数据库的列名命名规范是下划线区分单词命名法这样Java实体类和数据库列名不一致就成了一种常态。
为了尽量避免这种不一致造成的问题我们可以在进行项目开发时参照阿里巴巴的开发规约如下图所示 现在你知道这个面试题该怎么解决及回答了吗如果你还有其他问题可以在评论区给我留言哦。 千锋教育Java入门全套视频教程(java核心技术适合java零基础Java自学必备)