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

下面是 “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日

相关文章

  • Java 中的Printstream介绍_动力节点Java学院整理

    Java 中的PrintStream 介绍 什么是 PrintStream PrintStream 是 Java 中用于输出数据的一个类,提供了一系列的 print() 和 println() 方法实现输出功能。 PrintStream 常用的构造方法有两种: PrintStream(File file) PrintStream(OutputStream o…

    Java 2023年5月26日
    00
  • GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署

    下面我会详细讲解一下“GitLab+Jenkins+Maven+Tomcat 实现自动集成、打包、部署”的完整攻略。 1. 环境搭建 1.1. 安装GitLab GitLab是一个基于Git的在线代码托管平台,我们可以使用它来管理我们的代码仓库。我们需要在一台服务器上安装并运行GitLab。 安装GitLab的过程可以参考官方文档进行操作,在此不再赘述。 1…

    Java 2023年6月2日
    00
  • 散列算法与散列码(实例讲解)

    当我们需要在计算机中存储大量数据时,通常需要使用散列算法来处理数据。简单来说,散列算法就是将一个任意长度的输入,通过计算得到一个固定长度的输出,这个固定长度的输出就是散列码。 散列算法常用的应用场景包括密码存储和数据校验等。 常用散列算法 目前最常用的散列算法包括MD5、SHA-1、SHA-256等。这些算法的优点在于对于相同的输入,输出结果总是一样的。但是…

    Java 2023年5月19日
    00
  • shiro 与 SpringMVC的整合完美示例

    以下是关于“shiro 与 SpringMVC的整合完美示例”的完整攻略,其中包含两个示例。 shiro 与 SpringMVC的整合完美示例 shiro是一个强大的Java安全框架,可以用于身份验证、授权、加密等。在本文中,我们将讲解如何将shiro与SpringMVC整合,以实现安全的Web应用程序。 整合步骤 将shiro与SpringMVC整合的步骤…

    Java 2023年5月17日
    00
  • java 多线程交通信号灯模拟过程详解

    Java多线程交通信号灯模拟是一个经典的多线程案例,它可以很好的展示多线程的同时执行与互斥访问的特性,是多线程初学者不可错过的一个练手项目。下面我将详细讲解其完整攻略。 一、技术原理 线程同步:多个线程之间的相互协作都要通过线程同步来达到,Java中提供了多种同步机制,而这里最常用的是 synchronized 关键字来实现同步。 阻塞与唤醒:在多线程中,需…

    Java 2023年5月19日
    00
  • java 格式化时间的示例代码

    下面是“java格式化时间的示例代码”的完整攻略。 格式化时间的方法 在Java中,可以使用SimpleDateFormat类中的format方法对时间进行格式化。 代码演示 下面给出一个示例,假设有如下需要格式化的时间: Date date = new Date(); 要把这个时间格式化为“yyyy-MM-dd HH:mm:ss”的形式,可以使用以下代码:…

    Java 2023年6月1日
    00
  • Java——对象初始化顺序使用详解

    Java——对象初始化顺序使用详解 在Java中,对象初始化的顺序非常重要,因为它直接影响程序的行为以及可能导致程序出现一些难以调试的错误。本文将详细讲解Java中对象初始化的顺序及其使用注意事项。 对象初始化顺序 当一个Java对象被创建时,其成员变量会被初始化为其对应的初始值。但是,如果类中包含了静态块、静态变量、实例块、实例变量、构造函数等初始化代码,…

    Java 2023年5月26日
    00
  • Spring Boot 整合持久层之Spring Data JPA

    下面是对Spring Boot整合持久层之Spring Data JPA的一个完整攻略。 什么是Spring Data JPA Spring Data JPA是Spring提供的一个基于JPA(Java Persistence API)规范的框架,它提供了一种简化的方式来操作数据存储,不管是关系型数据库还是非关系型数据库。 如何使用Spring Data J…

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