千家信息网

Mybatis resultMap标签继承、复用、嵌套的方法

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,本篇内容主要讲解"Mybatis resultMap标签继承、复用、嵌套的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Mybatis resultM
千家信息网最后更新 2025年11月14日Mybatis resultMap标签继承、复用、嵌套的方法

本篇内容主要讲解"Mybatis resultMap标签继承、复用、嵌套的方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Mybatis resultMap标签继承、复用、嵌套的方法"吧!

    resultMap标签继承、复用、嵌套

    记录演示 Mybatis 中 resultMap 标签继承、复用(包括跨文件)以及多层嵌套的使用方法,

    • 继承: 继承已存在的 resultMap 标签进行扩展

    • 复用: 跨mapper文件引用现存的 resultMap 标签

    • 嵌套: 多层嵌套的JavaBean与 resultMap 映射方法

    定义表与实体类

    创建三个表 group member score

    score 与 member 一对一,通过 score.id 关联

    group 与 member 一对多,通过 group.id 关联

    create table `score` (    `id` int comment '主键',    `math` float comment '数学成绩',    `history` float comment '历史成绩',    primary key (`id`))create table `member` (    `id` int comment '主键',    `name` varchar comment '姓名',    `group_id` int comment '所属组group表id',    `score_id` int comment '成绩Score表id',    primary key (`id`))create table `group` (    `id` int comment '主键',    `name` varchar comment '组名',    primary key (`id`))
    实体类

    创建三个实体类 Group Member Score

    Score 类的对象是 Member 类的成员变量

    Member 类的对象集合是 Group 类的成员变量

    /** 成绩类 */public class Score {    private Integer id;    /** 数学成绩 */    private Float math;    /** 历史成绩 */    private Float hitory;    ...getter And setter...}/** 成员类 */public class Member {    private Integer id;    /** 姓名 */    private String name;    /** 分数对象 */    private Score score;    ...getter And setter...}/** 组类 */public class Group {    private Integer id;    /** 组名 */    private String groupName;    /** 成员 */    private List members;    ...getter And setter...}
    定义与表映射的 resultMap

    在 BeanMapper.xml 定义最基本的与数据库表字段映射的 resultMap 标签

                                                                                                

    继承、复用、嵌套

    创建 DemoMapper.xml,演示标签的继承、复用、嵌套

    复用现存标签时若位于相同mapper文件可直接使用 resultMap 的 id 属性引用,跨文件时需要指定 namespace 属性才可正常引用

    • extends: 继承,可继承其他 resultMap 并加以扩展

    • association: 复用现存的 resultMap,适用于对应的属性为单JavaBean时,使用 javaType 指定Java类型

    • collection: 复用现存的 resultMap,适用于对应的属性为JavaBean集合时,使用 ofType 指定Java类型

    • columnPrefix: 只将该属性指定前缀的属性赋值给当前 resultMap,存在多层嵌套时每进入一层就会将本层前缀截取掉。

    如下面的mapper文件中,外层的 fullMemberMap 前缀为 member_,经本次筛选 member_score_id -> score_id,

    内层的 scoreMap 前缀为 score_,经本次筛选 score_id -> id,最终被赋值给 Score.id

    所以只有形如 member_score_id 的字段才会最终进入 scoreMap 的取值范围中

    若是不复用只是单纯嵌套,则可以直接将三个类写在一个 resultMap 标签内实现

                                                                                    

    使用resultmap需要注意的地方

    今天主要还是根据需求在进行sql的编写 ,在mybatis里面进行复查和复用的时候一定要去看所对应的有没有这个类 ,今天弄了几个dto,还有时间戳的转换,java里面的时间戳是以毫秒来进行计算的。

    到此,相信大家对"Mybatis resultMap标签继承、复用、嵌套的方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    0