Mybatis resultMap标签继承、复用、嵌套方式 |
您所在的位置:网站首页 › resultmap指定类型 › Mybatis resultMap标签继承、复用、嵌套方式 |
携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第25天,点击查看活动详情 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 标签内实现 select g.id, g.name, m.id member_id, m.name member_name, s.id member_score_id, s.math member_score_math, s.history member_score_history from `group` g left join `member` m on m.group_id = g.id left join `score` s on s.id = m.score_id where g.id = #{id,jdbcType=INTEGER} 使用resultMap需要注意的地方今天主要还是根据需求在进行sql的编写 ,在mybatis里面进行复查和复用的时候一定要去看所对应的有没有这个类 ,今天弄了几个dto,还有时间戳的转换,java里面的时间戳是以毫秒来进行计算的。 所以说在专用mysql的时候要注意 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |