【精选】Mybatis使用resultType自动映射、使用别名和ResultMap标签进行结果映射

您所在的位置:网站首页 映射和映射有什么区别 【精选】Mybatis使用resultType自动映射、使用别名和ResultMap标签进行结果映射

【精选】Mybatis使用resultType自动映射、使用别名和ResultMap标签进行结果映射

2023-10-24 23:03| 来源: 网络整理| 查看: 265

今天继续完善一下mybatis系列相关博客,以便查阅,同时也希望能帮助到有需要的小伙伴,各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!

上一篇通过指定resultType为map将所有的列映射到HashMap 的键上,虽然在大部分情况下都够用,但是 HashMap 并不是一个很好的领域模型。通常我们使用javabean作为领域模型。MyBatis 对两者都提供了支持。

比如之前我们的测试例子中:

select *from t_user where id = #{id} and name = #{name}

我们使用resultType指定一个返回对象的类型,在这些情况下,MyBatis 会在幕后自动创建一个 ResultMap,再根据属性名来映射列到 JavaBean 的属性上。如果列名和属性名不能匹配上,可以在 SELECT 语句中设置列别名来完成匹配。

resultType自动映射

比如,我们在查询用户信息的时候想把用户wife的名字查询出来,或者把wife的详细信息都查询出来,可以像下面这样:

@Data public class UserWifeDto { private Integer id; private String name; private Integer age; private String wifeName; }

Mapper接口中:

UserWifeDto testAutomappering(int id);

Mapper.xml中:

select u.*, w.wife_name from t_user u left join t_wife w on u.id = w.user_id where u.id = #{id} 使用别名进行结果映射

比如上面我们UserWifeDto中的wifeName为wfName,那属性名和列名就不能匹配上,可以在查询时使用别名的方式完成匹配,如:

select u.*,w.wife_name as wfName from t_user u left join t_wife w on u.id = w.user_id where u.id = #{id}

这只是依赖了wife对象的一个属性,如果UserWifeDt中依赖wife对象 private Wife wife; 这时就没法自动映射wife属性了 结果如下:

这时候就可以使用强大的ResultMap标签了。看下官方文档中对此标签的表述:

resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。

ResultMap标签进行结果映射 使用resultMap级联属性封装结果集 @Data public class UserWifeDto { private Integer id; private String name; private Integer age; private String wifeName; private Wife wife; }

Mapper接口中:

UserWifeDto testCascadeResultMap(int id);

Mapper.xml中:

select u.*, w.* from t_user u left join t_wife w on u.id = w.user_id where u.id = #{id}

执行结果如下:

resultMap中使用association关联查询(一对一)

springboot整合mybatis使用association做关联查询 一对一查询

resultMap中使用collection关联查询(一对多)

springboot整合mybatis使用collection查询 一对多 多对一 多对多查询



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3