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

使用 @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.kler.cn/a/552399.html

相关文章:

  • 24蓝桥省赛B-数字接龙
  • 【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • Android Studio 提示 !Failed to initialize editor
  • 力扣LeetCode: 1299 将每个元素替换为右侧最大元素
  • MySQL 窗口函数:功能、使用场景与性能优化
  • 【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★)
  • 【05】密码学与隐私保护
  • vue3项目实践心得-多次渲染同一svg + 理解v-if、transition、dom加载之间的顺序
  • 详解AbstractQueuedSynchronizer(AQS)源码
  • ubantu安装skywalking10.0.0
  • 人工智能 - 脑机融合:人类脑组织操控机器人,具身智能时代的革命性突破
  • Java编程语言:从基础到高级应用的全面探索
  • 构建高效矩阵系统:技术与策略全解析(可OEM)
  • 萃取的实现(三)
  • 【CSS】部分div禁用tailwindcss
  • 【Linux】(32)详解命名管道 | 日志管理 | 进程池2.0
  • WordPress自助建站全攻略
  • 快速排序C++模板,面试常考需背熟
  • 初探ai利用图片生成前端代码
  • 无人机飞手培训机构招生宣传技术详解