首页 > 其他分享 >MyBatis之ResultMap

MyBatis之ResultMap

时间:2024-06-18 17:43:35浏览次数:29  
标签:name value ResultMap key MyBatis feeKeyId id unit

ResultMap 的属性列表

 

resultMap标签介绍

  • constructor - 用于在实例化类时,注入结果到构造方法中
    • idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能
    • arg - 将被注入到构造方法的一个普通结果
  • id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能,用于主键
  • result – 注入到字段或 JavaBean 属性的普通结果
  • association – 一个复杂类型的关联;许多结果将包装成这种类型
  • 嵌套结果映射 – 关联可以是 resultMap 元素,或是对其它结果映射的引用
  • collection – 一个复杂类型的集合
    • 嵌套结果映射 – 集合可以是 resultMap 元素,或是对其它结果映射的引用
  • discriminator – 使用结果值来决定使用哪个 resultMap
    • case – 基于某些值的结果映射.嵌套结果映射 – case 也是一个结果映射,因此具有相同的结构和元素;或者引用其它的结果映射

 

id & result标签参数详解

 

示例

<resultMap id="FeeInfoList" type="com.atguigu.lease.web.admin.vo.fee.FeeKeyVo">
        <id property="id" column="id"/>
        <result property="name" column="key_name"/>
        <collection property="feeValueList" ofType="com.atguigu.lease.model.entity.FeeValue">
            <id column="value_id" property="id"/>
            <result column="value_name" property="name"/>
            <result column="value_unit" property="unit"/>
            <result column="key_id" property="feeKeyId"/>
        </collection>
    </resultMap>

    <select id="listFeeInfo" resultMap="FeeInfoList">
        select k.id,
               k.name       key_name,
               v.id         value_id,
               v.name       value_name,
               v.unit       value_unit,
               v.fee_key_id key_id
        from fee_key k
                 left join fee_value v on k.id = v.fee_key_id and v.is_deleted = 0
        where k.is_deleted = 0
    </select>

其中:

public class FeeValue extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @Schema(description = "费用value")
    @TableField(value = "name")
    private String name;

    @Schema(description = "收费单位")
    @TableField(value = "unit")
    private String unit;

    @Schema(description = "费用所对的fee_key编码")
    @TableField(value = "fee_key_id")
    private Long feeKeyId;

}


public class FeeKeyVo extends FeeKey {

    @Schema(description = "杂费value列表")
    private List<FeeValue> feeValueList;
}


public class FeeKey extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @Schema(description = "付款项key")
    @TableField(value = "name")
    private String name;

}

结果会自动映射:

[
    {
      "id": 1,
      "name": "停车费",
      "feeValueList": [
        {
          "id": 3,
          "name": "400",
          "unit": "元/月",
          "feeKeyId": 1
        },
        {
          "id": 2,
          "name": "300",
          "unit": "元/月",
          "feeKeyId": 1
        },
        {
          "id": 1,
          "name": "200",
          "unit": "元/月",
          "feeKeyId": 1
        }
      ]
    },
    {
      "id": 2,
      "name": "网费",
      "feeValueList": [
        {
          "id": 7,
          "name": "500",
          "unit": "元/年",
          "feeKeyId": 2
        },
        {
          "id": 6,
          "name": "1000",
          "unit": "元/年",
          "feeKeyId": 2
        },
        {
          "id": 5,
          "name": "60",
          "unit": "元/月",
          "feeKeyId": 2
        },
        {
          "id": 4,
          "name": "50",
          "unit": "元/月",
          "feeKeyId": 2
        }
      ]
    }
]

 

标签:name,value,ResultMap,key,MyBatis,feeKeyId,id,unit
From: https://www.cnblogs.com/r1-12king/p/18254808

相关文章

  • MyBatis Plus Generator代码生成
    一、MyBatisPlusGeneratorMyBatisPlus是一个功能强大的持久层框架,它简化了MyBatis的使用,提供了许多便捷的功能。其中,MyBatisPlusGenerator是一个强大的代码生成器,可以帮助我们快速地根据数据库表结构生成对应的实体类、映射文件和DAO接口。在MyBatisPlusGenerator中......
  • mybatis关联查询
    packagecom.xin.pojo;importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importjava.util.List;@Data@AllArgsConstructor@NoArgsConstructorpublicclassUserLogin{privateintid;privateStringusername;......
  • mybatis增删改查
    packagecom.xin.mapper;importcom.xin.pojo.UserLogin;importorg.apache.ibatis.annotations.Mapper;importorg.apache.ibatis.annotations.Param;importorg.springframework.stereotype.Repository;importjava.math.BigInteger;importjava.util.List;@Mappe......
  • maven 加载不到 mybatis xml 配置文件
     <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin>......
  • 浅析Mybatis拦截器
    一、背景最近针对项目中出现的慢sql,我们使用自定义Mybatis拦截器,结合DUCC动态配置慢sql阈值,来监控慢sql并报警,提前发现风险点。借着这个契机,浅析下Mybatis拦截器原理,个人理解,不足之处请指正。二、Mybatis拦截器Mybatis使用plugin来拦截方法调用,所以MyBatisplugin也称为:Mybatis......
  • 【Mybatis】Mybatis快速入门
    MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了googlecode,并且改名为MyBatis。2013年11月迁移到Github。官网:https://mybatis.org/mybatis-3/zh/index.htmlMybatis入门Mybatis会把数据库执......
  • MyBatisX插件生成代码
    MyBatisX插件MyBatisPlus提供了一个IDEA插件——MybatisX,使用它可根据数据库快速生成Entity、Mapper、Mapper.xml、Service、ServiceImpl等代码,使用户更专注于业务。下面演示具体用法安装插件在IDEA插件市场搜索MyBatisX,进行在线安装配置数据库连接在IDEA中配置数据......
  • MybatisPlus逻辑删除
    逻辑删除就是基于代码逻辑模拟删除效果,但并不会真正删除数据。思路如下:1.在表中添加一个字段标记数据是否被删除2.当删除数据时把标记置为13.查询时只查询标记为0的数据 例如逻辑删除字段为deleted,那么删除操作的sql语句为:UPDATEuserSETdeleted=1WHEREid=1AND......
  • Mybatis框架
    Java中的持久层框架 1.mybatis:最早叫ibatis       开发效率低,执行性能好2.hibernate                开发效率高,执行性能低反射对象.属性=值属性.赋值方法(对象,值)*反射是java进阶的分水岭*不要乱用反射,反射性能......
  • Mybatis-Plus-Join(MPJ连表查询)
    mybatis-plus作为mybatis的增强工具,它的出现极大的简化了开发中的数据库操作,但是长久以来,它的联表查询能力一直被大家所诟病。一旦遇到leftjoin或rightjoin的左右连接,你还是得老老实实的打开xml文件,手写上一大段的sql语句一款叫做mybatis-plus-join的工具(后面就简称mpj了),可以不......