当前位置: 首页 > news >正文

使用 @Results 注解来手动指定字段映射

在 MyBatis 中,@Results 注解用于手动指定查询结果的字段映射,尤其当数据库列名与 Java 对象的字段名不一致时。你可以通过 @Results 和 @Result 注解来精确控制每一列与类属性之间的映射关系。
示例:使用 @Results 注解来手动指定字段映射
假设你有一个 AiTeachingPlanItems 类,它与数据库表 t_ai_teaching_plan_items 对应。这个类的字段与数据库列名不完全一致,或者你想更清晰地控制映射关系时,可以使用 @Results 注解。
1. 假设的 Java 类(AiTeachingPlanItems):
public class AiTeachingPlanItems {
    private Long id;                 // 对应数据库的 `id` 字段
    private String name;             // 对应数据库的 `name` 字段
    private String description;      // 对应数据库的 `description` 字段
    private Integer sort;            // 对应数据库的 `sort` 字段

    // getters and setters
}

2. 使用 @Results 注解进行字段映射:
假设 t_ai_teaching_plan_items 表的列名是 AI_ID, AI_NAME, AI_DESCRIPTION, AI_SORT,并且这些列名与你的 Java 类的属性名不完全一致。你可以通过 @Results 注解来显式指定映射关系。
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Result;

public interface AiTeachingPlanItemsMapper {

    @Select("SELECT AI_ID, AI_NAME, AI_DESCRIPTION, AI_SORT FROM t_ai_teaching_plan_items WHERE AI_TEACHING_PLAN_THEME = #{aiTeachingPlanTheme} ORDER BY AI_SORT")
    @Results({
        @Result(property = "id", column = "AI_ID"),
        @Result(property = "name", column = "AI_NAME"),
        @Result(property = "description", column = "AI_DESCRIPTION"),
        @Result(property = "sort", column = "AI_SORT")
    })
    List<AiTeachingPlanItems> getAiTeachingPlanItemsByTheme(String aiTeachingPlanTheme);
}

3. 解析代码:

1.@Select:指定 SQL 查询语句。
2.在此例中,SQL 查询从 t_ai_teaching_plan_items 表中选择了四个字段,并根据 AI_TEACHING_PLAN_THEME 进行筛选。
3.@Results:用于指定查询结果与 Java 对象字段之间的映射关系。
4.@Result(property = "id", column = "AI_ID"):这表示查询结果中的 AI_ID 列应该映射到 AiTeachingPlanItems 对象的 id 属性。
5.@Result(property = "name", column = "AI_NAME"):查询结果中的 AI_NAME 列映射到 name 属性,以此类推。
6.List<AiTeachingPlanItems>:方法返回的是一个 AiTeachingPlanItems 对象的列表。

4. 使用 @Results 的场景:

7.字段命名不一致:如果数据库中的列名与 Java 类的属性名不一致,使用 @Results 可以手动指定每列与对象属性之间的映射关系。
8.复杂映射:当查询涉及多个表连接(例如,联接查询)时,@Results 可以帮助你将多个表的列映射到不同的对象属性。

5. 小结:

9.@Results 是 MyBatis 提供的用于控制查询结果与 Java 对象之间映射的注解。
10.@Result 用来指定具体的字段映射规则,适用于字段命名不一致或者需要手动设置映射关系的场景。
 

http://www.lryc.cn/news/539072.html

相关文章:

  • 数据治理中 大数据处理一般都遵循哪些原则
  • 从0到1:STM32温控系统开发踩坑指南
  • 修改时无条件,可以自定义id条件(通过查询)
  • 工业制造能耗管理新突破,漫途MTIC-ECM平台助力企业绿色转型!
  • 实现一个简单的协同过滤推荐算法
  • eNSP防火墙综合实验
  • 操作系统知识(二)
  • 图论:tarjan 算法求解强连通分量
  • Spring中Bean的四种实例化方法
  • 专利申请要求
  • 解锁 JavaScript 异步编程:Promise 链式操作、async/await 与 Promise.all 深度剖析
  • Centos虚拟机扩展磁盘空间
  • 记录一次部署PC端网址全过程
  • 利用 OpenCV 进行棋盘检测与透视变换
  • Java Spring boot 篇:常用注解
  • #渗透测试#批量漏洞挖掘#Apache Log4j反序列化命令执行漏洞
  • 【Linux】Linux 文件系统——关于inode 不足的相关案例
  • k8s集群如何赋权普通用户仅管理指定命名空间资源
  • 工控网络安全介绍 工控网络安全知识题目
  • AIGC(生成式AI)试用 21 -- Python调用deepseek API
  • 跨平台AES/DES加密解密算法【超全】
  • Webpack 基础入门
  • deepseek-v3在阿里云和腾讯云的使用中的差异
  • Mathtype安装入门指南
  • 使用 Apache PDFBox 提取 PDF 中的文本和图像
  • 【js逆向_入门】图灵爬虫练习平台 第四题
  • Redis7——基础篇(三)
  • 深度学习中的知识蒸馏
  • 【Windows软件 - HeidiSQL】导出数据库
  • 苏剑林“闭门造车”之多模态思路浅谈思考