Mybatis-Plus 映射匹配兼容性的问题解决

yizhihongxing

下面是 “Mybatis-Plus 映射匹配兼容性的问题解决”的完整攻略:

1. 问题背景

在使用 Mybatis-Plus 进行二次封装的时候,常常会出现如下问题:

当我们的数据库表中含有下划线时,Mybatis-Plus 默认的驼峰命名映射策略就会失效,例如:user_info 表会自动被映射成 UserInfo 而非 UserInfo。这时,就需要我们手动开启驼峰命名策略,否则会出现SQL 执行失败的问题。

2. 解决方案

需要在 Mybatis-Plus 配置中进行以下配置,开启 Mybatis-Plus 的驼峰命名规则

# 开启驼峰命名策略
mybatis-plus:
  configuration:
    map-underscore-to-camel-case: true

3. 示例一

假设现在我们有一个 user_info 表,其中有字段为 user_name 和 user_age,对应的实体类为:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class UserInfo {

    /** 主键 */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /** 用户名 */
    private String userName;

    /** 用户年龄 */
    private Integer userAge;

    /** 用户邮箱 */
    private String userEmail;

    /** 版本号 */
    @Version
    private Integer version;

    /** 逻辑删除位 */
    private Integer deleted;

}

接下来进行数据操作,例如使用 Mybatis-Plus 的 baseMapper 查询 user_info 表,如下:

@Repository
public interface UserInfoMapper extends BaseMapper<UserInfo> {

    @Select("select * from user_info;")
    List<UserInfo> queryAll();
}

由于我们已经在 Mybatis-Plus 配置文件中开启了驼峰命名规则,此时会自动映射 user_info 表中的字段 user_name 和 user_age 到实体类的 userName 和 userAge 属性中。而 userEmail 字段不会被映射到实体类中。

4. 示例二

现在我们再加上一个 order_info 表,其中有字段为 order_time 和 order_price,对应的实体类为:

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderInfo {

    /** 主键 */
    @TableId(type = IdType.AUTO)
    private Integer id;

    /** 订单时间 */
    private Date orderTime;

    /** 订单价格 */
    private Integer orderPrice;

    /** 逻辑删除位 */
    private Integer deleted;
}

同样,在使用 baseMapper 进行查询操作时,我们已经开启了驼峰命名规则,查询代码如下:

@Repository
public interface OrderInfoMapper extends BaseMapper<OrderInfo> {

    @Select("select * from order_info;")
    List<OrderInfo> queryAll();
}

在这个例子中,order_info 表中的字段 order_time 和 order_price 会自动匹配到实体类中的 orderTime 和 orderPrice 属性,而 id 和 deleted 字段不需要进行手动匹配。

5. 总结

以上就是使用 Mybatis-Plus 解决映射匹配兼容性问题的攻略,所需配置项一般就是:mybatis.configuration.map-underscore-to-camel-case=true,开启驼峰命名匹配规则后,Mybatis-Plus 会自动将数据库中下划线分隔的字段名,映射到对应实体类的驼峰命名的属性中,使得使用更加方便。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Mybatis-Plus 映射匹配兼容性的问题解决 - Python技术站

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

相关文章

  • POI导出Excel报错No such file or directory的解决方法

    针对“POI导出Excel报错No such file or directory”的解决方法,以下是详细的攻略。 问题描述 在使用POI导出Excel时,可能会出现报错“java.io.FileNotFoundException: No such file or directory”,这种错误通常出现在将Excel文件导出到指定路径时。 原因分析 这个报错通…

    Java 2023年5月19日
    00
  • SpringSecurity权限控制实现原理解析

    关于SpringSecurity权限控制实现原理解析,以下是完整攻略: 概述 Spring Security是一个Java企业级应用程序的安全性框架,为企业级应用程序提供了强大的认证和授权处理。其中权限控制是Spring Security中最重要的组件之一,通过配置安全策略,能够控制用户对某一资源是否具有访问权限。在Spring Security中,权限控制…

    Java 2023年5月20日
    00
  • 关于BufferedReader读取文件指定字符集问题

    关于BufferedReader读取文件指定字符集问题的完整攻略包括以下几个步骤: 确定目标文件的字符集类型 要读取文件需要先确定文件的字符集类型,否则读取后字符可能会出现乱码。可以通过以下两种方式确定目标文件的字符集类型: 手动查看文件编码类型:打开文件,选择“另存为”功能,在“另存为”弹窗中会显示当前文件的编码类型。 使用Java环境中的CharsetD…

    Java 2023年5月20日
    00
  • Asp.net FileUpload+Image制作头像效果示例代码

    我们来详细讲解一下“ASP.NET FileUpload+Image制作头像效果示例代码”的完整攻略。 概述 首先,我们需要了解一些基本的概念。在 ASP.NET 中,我们可以使用 FileUpload 控件来接收用户上传的文件,使用 Image 控件来展示上传的图片。一般来说,用户上传头像时,我们需要对其进行剪裁、压缩等操作,以获得更好的用户体验。 第一步…

    Java 2023年5月19日
    00
  • java中类与对象的使用详情

    下面我将详细介绍“Java中类与对象的使用”。 类与对象的基本概念 在Java中,类是一种抽象的数据类型,它是一组相关属性和方法的集合。而对象则是类的实例化,它可以调用类中定义的方法或访问类中定义的属性。 定义类 定义类的语法格式如下: public class ClassName { // 定义属性 // 定义方法 } 其中,public是访问控制符,表示…

    Java 2023年5月26日
    00
  • Spring Boot集成Mybatis的实例代码(简洁版)

    Spring Boot 集成 MyBatis 的完整攻略 Spring Boot 是一个快速构建 Spring 应用程序的框架,它提供了许多便利的功能,例如自动配置、嵌入式服务器和健康检查等。在本文中,我们将详细讲解 Spring Boot 集成 MyBatis 的完整攻略。 步骤一:创建 Spring Boot 项目 首先,我们需要创建一个 Spring …

    Java 2023年5月15日
    00
  • Spring JPA find单表查询方法示例详解

    Spring JPA find单表查询方法示例详解 Spring JPA 通过“简化”的方式提供了一种与数据库交互的方法,方便地进行单表的数据查询、插入、删除和更新操作。本文将详细讲解 Spring JPA 的 find 单表查询方法的使用,包括查询单条数据、查询多条数据、使用关键字(Keyword)查询、使用原生 SQL 语句查询、继承 JPAReposi…

    Java 2023年5月20日
    00
  • Spring存储与读取Bean对象方法

    下面是关于”Spring存储与读取Bean对象方法”的完整攻略。 1. 前置知识 在学习本文之前,建议先掌握以下知识: Java基础 Spring基础 Spring IOC 2. 存储Bean对象到Spring容器 在Spring框架中,可以通过ApplicationContext接口来加载Bean对象,也可以将Bean对象保存到容器中。具体实现方式有两种:…

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