MyBatis中当实体类中的属性名和表中的字段名不一样,怎么办

方法1: 在mybatis核心配置文件中指定,springboot加载mybatis核心配置文件

springboot项目的一个特点就是0配置,本来就省掉了mybatis的核心配置文件,现在又加回去算什么事,总之这种方式可行但没人这样用

具体操作:

①创建mybatis核心配置文件,放在resources下,设置setting标签,开启驼峰命名

|--------------------------------------------------------------------------------------------------------------------------------------------------------|
| |

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |

②在springboot的yml配置文件中配置mybatis核心配置文件

|-----|----------------------------------------------------------------------|
| 1 2 | mybatis: ``config-location: classpath:config/mybatis-config.xml |

方法2: 在springboot的配置文件中指定(常用)

mybatis都被整合到springboot项目中了,自然属性都被springboot自动配置了,现在的情况就类似于我们要去修改自动配置好的属性

我们只需要在springboot的配置文件中设置一下就行了

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| |

|-------|------------------------------------------------------------------------|
| 1 2 3 | mybatis: ``configuration: ``map-underscore-to-camel-case: true |

方法3: 写一个配置类 自定义注册器

除了修改属性,也可以直接写一个配置类,在类中重写方法,让springboot配置mybatis时运行我们自定义的方法(自定义注册器)而不去运行默认方法

|-------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @Configuration public class MybatisConfig { @Bean public ConfigurationCustomizer configurationCustomizer(){ ``return new ConfigurationCustomizer() { ``@Override ``public void customize(org.apache.ibatis.session.Configuration configuration) { ``configuration.setLazyLoadingEnabled(true); ``configuration.setMapUnderscoreToCamelCase(true); ``configuration.setLogImpl(Log4jImpl.class); ``} ``}; ``} } |

方法4:起别名。

数据库表的字段的别名就起为实体类中对应属性名。

sql 复制代码
select emp_id as empId,emp_name as empName,emp_sal as salary from t_emp

方法5:进行ResultMap映射。

一次性定义,重复使用,避免重复起别名。

XML 复制代码
<resultMap id="employeeMap" type="com.atguigu.mybatis.entity.Employee">

    <!-- 使用id标签设置主键列和主键属性之间的对应关系 -->

    <!-- column属性用于指定字段名;property属性用于指定Java实体类属性名 -->

    <id column="emp_id" property="empId"/>   

    <!-- 使用result标签设置普通字段和Java实体类属性之间的关系 -->

    <result column="emp_name" property="empName"/>

    <result column="emp_salary" property="empSalary"/>

</resultMap>

<select id="selectEmployeeByRM" resultMap="employeeMap">

    select emp_id,emp_name,emp_salary from t_emp where emp_id=#{empId}

</select>

Mybatis-plus方法

1.实体类添加注解

主要注释到实体类上的注解:

@TableName(value = ...)

当数据库名与实体类名不一致或不符合驼峰命名时,需要在此注解指定表名

主键自增的设定:

@TableId(type = IdType.AUTO)

指定实体类的属性为对应的主键

@TableField注解

1、 主要用来解决实体类的字段名与数据库中的字段名不匹配的问题(数据库user_addr,字段useraddr未驼峰,mp默认开启驼峰)

  1. 实体类中的属性字段在表中不存在的问题

|---------|----------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 | // 用来解决数据库中的字段和实体类的字段不匹配问题 @TableField``(value = ``"age"``) // 用来解决实体类中有的属性但是数据表中没有的字段 @TableField``(exist = ``false``) ``// 默认为true |

2.在springboot的配置文件中指定(常用)

XML 复制代码
mybatis-plus:
        # MyBatis原生配置
        configuration:
        # 字段名称下划线转驼峰命名
        map-underscore-to-camel-case: true
相关推荐
HealthScience1 分钟前
【Bib 2026】基因最新综述(有什么任务、benchmark、代表性模型)
android·开发语言·kotlin
wjs20242 分钟前
CSS 网格元素
开发语言
AC赳赳老秦8 分钟前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Java小白笔记21 分钟前
OpenClaw 实战方法论
java·开发语言·人工智能·ai·全文检索·ai编程·ai写作
m0_3801138429 分钟前
补单系统搭建及源码分享
数据库·spring boot·mybatis
CoderCodingNo35 分钟前
【信奥业余科普】C++ 的奇妙之旅 | 12:程序的交互与加工——数据的输入与算术运算
开发语言·c++
呱牛do it1 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 5)
java·vue
练习时长一年1 小时前
Spring配置类的演化
java·spring boot·spring
阿丰资源1 小时前
基于SpringBoot+MySQL的社区团购系统设计与实现(附源码+文档+数据库,直接运行)
数据库·spring boot·mysql
喜欢流萤吖~1 小时前
服务间的依赖管理:微服务的协作之道
java·微服务