Mybatis 实体类属性名和表中字段名不一致怎么处理

一. 前言

最近耀哥有学生出去面试,被问到 "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自学必备)

相关推荐
小徐敲java8 小时前
通用mybatis-plus查询封装(QueryGenerator)
mybatis
OEC小胖胖9 小时前
Spring Boot + MyBatis 项目中常用注解详解(万字长篇解读)
java·spring boot·后端·spring·mybatis·web
计算机学姐10 小时前
基于SpringBoot+Vue的在线投票系统
java·vue.js·spring boot·后端·学习·intellij-idea·mybatis
落落落sss10 小时前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
罗曼蒂克在消亡13 小时前
2.3MyBatis——插件机制
java·mybatis·源码学习
cyt涛15 小时前
MyBatis 学习总结
数据库·sql·学习·mysql·mybatis·jdbc·lombok
OLDERHARD19 小时前
Java - MyBatis(上)
java·oracle·mybatis
计算机学姐1 天前
基于SpringBoot+Vue的高校运动会管理系统
java·vue.js·spring boot·后端·mysql·intellij-idea·mybatis
我是浮夸1 天前
MyBatisPlus——学习笔记
java·spring boot·mybatis
编程、小哥哥2 天前
手写mybatis之Mapper XML的解析和注册使用
xml·java·mybatis