解决mybatis plus 驼峰式命名规则问题

当我们使用 MyBatis-Plus 进行开发时,如果数据库中的表和列采用了下划线命名法,则需要搭配驼峰式命名法进行开发,这个过程中就需要解决 MyBatis-Plus 驼峰式命名规则问题。

以下是解决 MyBatis-Plus 驼峰式命名规则问题的完整攻略:

1. 配置文件中开启驼峰命名法

在 MyBatis-Plus 中,我们可以通过在配置文件中开启驼峰命名法来解决驼峰式命名规则问题。

# 配置文件
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true

map-underscore-to-camel-case 参数为 true 时,会开启数据库下划线方式和 Java 驼峰方式之间的转换。

2. 在实体中使用 @TableField 注解

如果不想在全局配置文件中开启驼峰命名法,也可以通过在实体类中使用 @TableField 注解来解决这个问题。我们可以在 @TableField 注解中使用 value 属性来指定数据库字段名称,而不是使用默认的驼峰式命名规则。

@Data
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(value = "user_name")
    private String userName;

    @TableField(value = "password")
    private String password;

    private Integer age;

    private String email;
}

通过在 @TableField 注解中指定 value 属性,我们可以将数据库字段名称和实体类属性名称进行映射,从而解决 MyBatis-Plus 驼峰式命名规则问题。

示例

以下是两个示例,演示如何使用 MyBatis-Plus 解决驼峰式命名规则问题:

示例 1

数据库表的名称为 user_info,列名为 user_namecreate_time,在 MyBatis-Plus 的配置文件中开启驼峰命名法:

mybatis-plus:
  mapper-locations: classpath*:mapper/*.xml
  configuration:
    map-underscore-to-camel-case: true

定义实体类 User:

@Data
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    private String userName;

    private LocalDateTime createTime;

}

UserMapper 接口:

public interface UserMapper extends BaseMapper<User> {

}

执行查询:

@Test
void testSelect() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("user_name", "Tom");

    List<User> userList = userMapper.selectList(queryWrapper);
    for (User user : userList) {
        System.out.println(user);
    }
}

在执行查询时,我们可以看到,MyBatis-Plus 自动将数据库表和列名转换为了驼峰式命名规则,实现了自动映射。

示例 2

数据库表的名称为 user_info,列名为 user_namecreate_time,在实体类中使用 @TableField 注解指定数据库字段名称:

@Data
public class User {

    @TableId(type = IdType.AUTO)
    private Long id;

    @TableField(value = "user_name")
    private String userName;

    @TableField(value = "create_time")
    private LocalDateTime createTime;

}

执行查询:

@Test
void testSelect() {
    QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    queryWrapper.eq("user_name", "Tom");

    List<User> userList = userMapper.selectList(queryWrapper);
    for (User user : userList) {
        System.out.println(user);
    }
}

通过在实体类中使用 @TableField 注解,我们可以指定数据库字段名称,从而解决驼峰式命名规则问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:解决mybatis plus 驼峰式命名规则问题 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Spring Boot 启动、停止、重启、状态脚本

    Spring Boot启动、停止、重启、状态脚本的完整攻略 Spring Boot是一个非常流行的Java Web框架,它提供了许多方便的功能,如自配置、快速开发和易于部署。在本文中,我们将介绍如何编写Spring Boot的启动、停止、重启和状态脚本,并提供两个示例。 示例一:使用systemd编写脚本 systemd是一个Linux系统的初始化系统和服务…

    Java 2023年5月15日
    00
  • Java实现在线预览的示例代码(openOffice实现)

    Java实现在线预览是许多Web应用程序开发中常用的技术之一。本文将讲解如何使用openOffice实现在线预览Java文档的方法。 前置条件 在开始本文之前,请确保您已经满足以下条件: 安装openOffice软件并启动该服务。 安装Java开发环境(JDK) 如果您使用的是Maven和Spring,您需要安装这些工具 实现步骤 导入依赖 如果您正在使用M…

    Java 2023年5月18日
    00
  • 消息推送平台的实时数仓?!flink消费kafka消息入到hive

    大家好,3y啊。好些天没更新了,并没有偷懒,只不过一直在安装环境,差点都想放弃了。 上一次比较大的更新是做了austin的预览地址,把企业微信的应用和机器人消息各种的消息类型和功能给完善了。上一篇文章也提到了,austin常规的功能已经更新得差不多了,剩下的就是各种细节的完善。 不知道大家还记不记得我当时规划austin时,所画出的架构图: 现在就剩下aus…

    Java 2023年5月11日
    00
  • Nginx配置跨域,覆盖后端服务跨域配置

    本篇文章主要介绍了,如何通过Nginx配置跨域,并覆盖后端服务跨域配置。 先看下后端代码跨域配置: 主要的目标是:不修改后端跨域配置代码,来实现Nginx跨域指定域名。 @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource urlBasedCorsConfig…

    Java 2023年4月23日
    00
  • Java实现的文件上传下载工具类完整实例【上传文件自动命名】

    这里是Java实现的文件上传下载工具类完整实例【上传文件自动命名】的完整攻略。 1. 实现思路 文件上传下载是Web开发中非常常见的需求,Java提供了丰富的API和工具来实现文件上传下载的功能。这个工具类的实现思路如下: 文件上传:通过Servlet规范提供的HttpServletRequest对象获取上传文件,将上传文件保存到指定目录中,并返回文件保存路…

    Java 2023年5月20日
    00
  • Java中的notyfy()和notifyAll()的本质区别

    在Java多线程编程中,我们经常会用到wait()、notify()和notifyAll()方法,它们都属于Object类中用于锁的方法。其中notify()和notifyAll()方法都是用来唤醒等待线程的方法,但它们在本质上是有一定区别的。 一、notify()和notifyAll()方法的作用 notify()和notifyAll()都用于唤醒当前对象…

    Java 2023年5月26日
    00
  • jvm垃圾回收算法详细解析

    垃圾回收算法的分类 垃圾回收算法可以分为两种:标记-清除算法(Mark-Sweep)和复制算法(Copying),还有它们的变体和组合。 标记-清除算法(Mark-Sweep):这是垃圾回收算法中最基础的一种算法。它将内存分成两部分,一部分被程序使用,另一部分则被垃圾回收机制使用。垃圾回收机制会遍历程序使用的内存空间,标记出未被使用的内存,然后将其清除。它的…

    Java 2023年5月19日
    00
  • Java实现简易学生管理系统

    Java实现简易学生管理系统完整攻略 需求分析 首先,我们需要确定这个学生管理系统的具体功能需求,比如可以添加学生,删除学生,修改学生信息,查询学生信息等。 设计数据库 接下来,我们需要设计一个数据库来存储学生信息。一个简单的学生信息表可能包含以下字段:学号(ID),姓名(name),性别(gender),年龄(age),班级(class)。 构建项目框架 …

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部