首页 > 数据库 >在数据库字段命名格式和实体类属性命名格式不一致的情况下,通过配置 MyBatis 的通用 Mapper 并结合 Example 模式,高效地管理字段映射关系并完成数据库操作(一)

在数据库字段命名格式和实体类属性命名格式不一致的情况下,通过配置 MyBatis 的通用 Mapper 并结合 Example 模式,高效地管理字段映射关系并完成数据库操作(一)

时间:2024-11-29 16:23:23浏览次数:7  
标签:Mapper 实体类 通用 映射 Column 数据库 注解 命名 格式

MyBatis 的通用 Mapper 支持使用 @Column 注解进行字段映射,但需要满足以下条件:

  1. 项目中已集成 MyBatis 的通用 Mapper(例如 Mapper 插件)。
  2. 在通用 Mapper 的配置中启用了 @Column 注解支持。

通用 Mapper 会根据实体类中字段的 @Column 注解值来映射数据库表的列名。


使用 @Column 注解进行字段映射的配置和示例

1. 通用 Mapper 配置支持 @Column 注解

确保通用 Mapper 的依赖已经正确引入,并在项目的配置文件中启用 @Column 注解解析。

  • 添加 Maven 依赖(以 tk.mybatis 的通用 Mapper 为例):

    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>最新版本号</version>
    </dependency>
    
  • 配置文件中开启 @Column 支持
    通用 Mapper 默认支持 @Column 注解,无需额外配置,但确保项目的 Mapper 接口已经继承了通用 Mapper 提供的基础接口(如 Mapper<T>MyMapper<T>)。


2. 实体类中使用 @Column 注解

在实体类中,使用 @Column 注解指定字段与数据库列的映射关系:

  • 示例代码
    假设数据库表 user 的字段为 id_nouser_name,实体类的字段命名为驼峰格式:
    import jakarta.persistence.Column; // 或 javax.persistence.Column
    import jakarta.persistence.Table;
    
    @Table(name = "user") // 指定表名
    public class User {
        
        @Column(name = "id_no") // 指定映射到数据库的列名
        private String idNo;
    
        @Column(name = "user_name")
        private String userName;
    
        // Getter 和 Setter
        public String getIdNo() {
            return idNo;
        }
    
        public void setIdNo(String idNo) {
            this.idNo = idNo;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    }
    

3. 使用 Example 动态查询

在通用 Mapper 中,结合 Example 模式,查询时会自动使用 @Column 注解定义的字段映射。

  • 示例

    Example example = new Example(User.class);
    Example.Criteria criteria = example.createCriteria();
    criteria.andEqualTo("idNo", "12345");
    
    List<User> users = userMapper.selectByExample(example);
    
  • 生成的 SQL

    SELECT id_no, user_name FROM user WHERE id_no = '12345';
    

4. 结合其他通用 Mapper 方法

使用通用 Mapper 的其他方法(如 select, update, delete 等)时,也会自动解析 @Column 注解。

  • 示例
    // 根据主键查询
    User user = userMapper.selectByPrimaryKey(1);
    
    // 插入数据
    User newUser = new User();
    newUser.setIdNo("67890");
    newUser.setUserName("John Doe");
    userMapper.insert(newUser);
    
    // 更新数据
    User updateUser = new User();
    updateUser.setIdNo("12345");
    updateUser.setUserName("Updated Name");
    userMapper.updateByPrimaryKey(updateUser);
    

注意事项

  1. 依赖 JPA 注解

    • @Column@Table 是 JPA 规范中的注解(通常来自 javax.persistencejakarta.persistence 包),在通用 Mapper 中被支持。
    • 如果项目中没有 JPA 依赖,需要手动引入对应的 JPA 注解库(例如 jakarta.persistence)。
  2. 优先级

    • 如果实体类中同时使用了 @Column 和 MyBatis 的 resultMap/@Results 注解,MyBatis 通常优先解析 resultMap@Results 的映射规则。
    • 如果字段命名规则明确,优先考虑全局驼峰映射(mapUnderscoreToCamelCase)。
  3. 与通用 Mapper 结合

    • @Column 注解适用于使用通用 Mapper 提供的方法(如 selectByExampleselectByPrimaryKey 等),手写 SQL 则需要手动处理映射。
  4. 通用 Mapper 版本兼容性

    • 确保使用的通用 Mapper 版本支持 @Column 注解(目前绝大多数版本都已支持)。

总结

在 MyBatis 的通用 Mapper 中,可以使用 @Column 注解来实现字段与数据库列的映射。这种方式非常适合以下场景:

  1. 数据库列名和实体类字段名不一致。
  2. 希望在实体类中清晰定义映射规则。
  3. 项目中不使用 JPA 持久化框架,但想利用其注解特性。

通过配置通用 Mapper 并结合 Example 模式,可以高效地管理字段映射关系并完成数据库操作。

标签:Mapper,实体类,通用,映射,Column,数据库,注解,命名,格式
From: https://www.cnblogs.com/Will-Chang/p/18577001

相关文章

  • 在数据库字段命名格式和实体类属性命名格式不一致的情况下,通过配置 MyBatis 的通用 Ma
    如果在MyBatis的通用Mapper中结合Example模式查询时,未自动使用实体类中@Column注解定义的字段映射,可能的原因是配置或使用方式上存在一些问题。以下是解决方案和注意事项:原因分析通用Mapper的@Column支持:通用Mapper支持通过@Column注解映射字段和数据库列,但......
  • 客户端WinForm实现Form表单格式自定义
    usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.ComponentModel.Design;usingSystem.ComponentModel.Design.Serialization;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;using......
  • Springboot高职院校实践教学与就业跟踪085m6(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表学生,企业,企业信息,招聘信息,应聘信息,实习实践,问卷调查,学生答卷开题报告内容一、研究背景与意义随着我国经济的快速发展和产业结构的不断优化升级,高等职业......
  • hhdb数据库介绍(10-14)
    配置配置校验配置校验主要为计算节点相关配置提供校验功能,防止人为错误设置或线下修改计算节点相关配置导致运行异常等问题出现。容灾模式说明:集群开启容灾模式时,配置校验相关逻辑说明请结合跨机房容灾部署文档中的配置校验章节。功能入口:在关系集群数据库可视化管理平台页面......
  • hhdb数据库介绍(10-15)
    配置集群元数据备份还原集群元数据指的是计算节点配置库数据与配置文件。管理平台提供为计算节点手动或定时备份元数据的功能,以防重要配置数据丢失或损坏导致无法恢复。集群元数据备份手动备份远程备份为提高备份的元数据的安全性,本功能还提供将备份的元数据同时拷贝到......
  • hhdb数据库介绍(10-17)
    配置服务器服务器菜单可配置集群中所有服务器的SSH信息,方便管理平台对服务器进行各种状态监控。此外也支持添加集群外的服务器到管理平台中进行监控。自动获取服务器IP服务器页面会自动显示集群内所有的服务器IP以及服务器中关联的服务程序。单节点集群模式管理平台自动获取......
  • hhdb数据库介绍(10-16)
    配置存储节点参数存储节点参数通过可视化方式将部分无需重启的参数展示在管理平台上,方便运维人员进行管理。目前支持存储节点实例和计算节点配置库实例的参数管理。参数列表参数列表展示存储节点信息、版本信息、参数名称、参数当前值、参数默认值、参数有效值范围、参数生效......
  • hhdb数据库介绍(10-9)
    配置配置是管理平台为计算节点可视化配置所开发的功能,包括配置数据节点、存储节点、存储节点组、逻辑库、分片规则、表信息、数据库用户、计算节点等参数。同时配套设置了配置参数的校验与备份恢复的辅助功能。节点管理节点管理菜单主要为用户提供存储节点组、数据节点、存储节......
  • hhdb数据库介绍(10-8)
    首页管理平台通过数据可视方式在首页功能中实时展示计算节点集群的数据量、访问流量、集群组件状态、告警事件、安全防控等用户关心的信息。集群安全邮件通知:根据通知设置中监控开关是否打开判断,分为:全部开启、未开启、部分开启,点击跳转到通知设置页面系统定时检测:根据定时......
  • hhdb数据库介绍(10-10)
    配置节点管理切换规则配置切换规则可为用户提供数据节点高可用性。计算节点会定时检测存储节点的可用情况,一旦检测到存储节点发生故障,计算节点会依据配置的切换规则自动切换到备用的存储节点上,以保障服务的稳定性和可靠性。用户也可以进行手动切换。功能入口:在管理平台页面中......