当前位置:   article > 正文

mybatis/mybatisplus的resultMap/动态sql的xml和lambda/代码生成器使用/逻辑删除/多数据源/全局配置/sql拦截器和多租户含代码案例_mybatisplus resultmap配置

mybatisplus resultmap配置

mybatis/mybatis-plus常用

仓库代码地址:https://gitee.com/luckkiven/tedu-boot-vue3.0-mp

基于RBAC联表resultMap封装

为什么要联表

mybatis 单表操作

在这里插入图片描述

如上图:

<select id="selectUsers" parameterType="int" resultType="User">
  select
    id  ,
    name  ,         
    age   ,
  from user
  where id = #{id}
</select>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这些情况下,MyBatis 会在幕后自动创建一个 ResultMap,基于属性名来映射列到 JavaBean 的属性上

单表时 ,可以很轻松的根据JDBC对实体对象进行值封装, 但是在多表操作中,甚至是对象里面嵌套对象的时候, 并不能一次封装到对象,再封装到属性里面去

所以此时要使用resultMap 去配置规则**.处理嵌套**,或者处理属性名和表字段名不一致的情况

你可以把resultMap 看成是手动配置结果集封装

ResultMap 的设计就是简单语句不需要明确的结果映射,而很多复杂语句确实需要描述它们 的关系。

联表的坏处是什么

走越多的表关联关系, 意味查询更多的数据, 时间增加.SQL复杂度增加

一对一,一对多,多对多

image-20210702145825170

属性和结构

在这里插入图片描述

<!--column不做限制,可以为任意表的字段,而property须为type 定义的pojo属性-->
<resultMap id="唯一的标识" type="映射的pojo对象">
  <id column="表的主键字段,或者可以为查询语句中的别名字段" jdbcType="字段类型" property="映射pojo对象的主键属性" />
  <result column="表的一个字段(可以为任意表的一个字段)" jdbcType="字段类型" property="映射到pojo对象的一个属性(须为type定义的pojo对象中的一个属性)"/>
  <association property="pojo的一个对象属性" javaType="pojo关联的pojo对象">
    <id column="关联pojo对象对应表的主键字段" jdbcType="字段类型" property="关联pojo对象的主席属性"/>
    <result  column="任意表的字段" jdbcType="字段类型" property="关联pojo对象的属性"/>
  </association>
  <!-- 集合中的property须为oftype定义的pojo对象的属性-->
  <collection property="pojo的集合属性" ofType="集合中的pojo对象" autoMapping="true(自动封装字段映射)">
    <id column="集合中pojo对象对应的表的主键字段" jdbcType="字段类型" property="集合中pojo对象的主键属性" />
    <result column="可以为任意表的字段" jdbcType="字段类型" property="集合中的pojo对象的属性" />  
  </collection>
</resultMap>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
实战
准备表结构数据

jtsys.sql
在这里插入图片描述

如何做到5表联查 .

演示两种封装resultMap
提出需求
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/809387?site
推荐阅读
相关标签