一、Results的用法

  1. 用法一: 当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键
@Select("select id, name, class_id from student”)
@Results({//column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键@Result(column=“id”, property=“id”, jdbcType=JdbcType.INTEGER, id=true),@Result(column=“name”, property=“name”, jdbcType=JdbcType.VARCHAR),@Result(column=“class_id”, property=“classId”, jdbcType=JdbcType.INTEGER)
})
List selectAll();
  1. 用法二:当@results这段代码需要在多个方法中用到时,为了提高代码复用性,可以为@results指定id,然后使用@resultMap注解来复用这段代码(通过id匹配)
@Select("select id, name, class_id from student")
@Results(id="studentMap",value={@Result(column=“id”, property=“id”, jdbcType=JdbcType.INTEGER, id=true),@Result(column=“name”, property=“name”, jdbcType=JdbcType.VARCHAR),@Result(column=“class_id”, property=“classId”, jdbcType=JdbcType.INTEGER)
})
List selectAll();@Select("select id, name, class_id from student”"  where id = #{id}")
@resultMap("studentMap")
student getStudent (@param("id") long id)
  1. 用法三:需要通过查询到的字段去查询另外一个方法,将查询结果作为本次查询的一个属性
  • @one表示一对一:如下面的属性,studentMate类型为Student,查询studentMate的方法查询出一个
  • @many表示一对多:students类型为List,查询students的方法查询出多个
----student的属性
public class Student {private Integer id;private String name;private String classId;//查询自己班的同学(一对一)private List<Student> students;//查询自己的同桌(通过自己的id可以查询出同桌的信息)(一对多)private Student studentMate;
}

@Select("SELECT * " +"  FROM student " +" WHERE id =  #{id} ")
@Results(id=“studentMap”, value={@Result(column=“id”, property=“id”,id=true),@Result(column=“{id = ID}”, property=“studentMate”, //将查询到结果映射到java属性studentMate//这里要写的是子查询的路径,而不是sql语句,同时,子查询可以复用父查询的colum参数      one=@One(select=“com.example.DemoDao.selectMetaById”))
})
//查询出自己信息的同时查询出同桌的信息
Student selectInfoAndMeta(@param("id") long id);
​
​-------------------------------------------------------------------------------------------------------------------
@Select("SELECT * " +"  FROM student " +" WHERE id =  #{id} ")
@Results(id=“studentMap”, value={@Result(column=“id”, property=“id”,id=true),@Result(column=“{id = ID}”, property=“students”,//将查询到结果映射到java属性students//这里要写的是子查询的路径,而不是sql语句。@Many中常用的属性只有selet,用于指定关联查询的方法many=@many(select=“com.example.DemoDao.selectAllById”))
})
//查询出自己信息的同时查询出全班的信息
Student selectInfoAndAll(@param("id") long id);
传递多个参数时:@Result(column=“{id = ID,name = NAME}”, property=“***”)
----这个是重点----
等号右侧的ID和NAME是查出来的数据,分别赋给selectAllById方法中的id和name参数,去查询对应的信息(右边赋值给左边)

重点注意:@Results需要和@Select结合,不然单独的@Results不能被识别

二、@ResultMap的用法

@ResultMap注解的使用,其实就是引用已定义好的@Results

@ResultMap:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface ResultMap {String[] value();
}

参考文章
参考文章

mybatis中@Results,@ResultMap注解使用相关推荐

  1. mybatis中的ResultMap使用

    mybatis中的ResultMap使用 文章目录 mybatis中的ResultMap使用 一.自动映射 二.手动映射 1.返回值类型为resultMap 2.编写resultMap,实现手动映射! ...

  2. MyBatis中的常用注解

    在MyBatis中,一些SQL语句例如(select * from 表名;delete from 表名)等等,这些SQL语句比较简单,没有那些复杂的关联关系,但是在不用注解的情况下,要执行这些方法的话 ...

  3. 浅谈MyBatis中的resultMap(个人总结)

    官方文档:          mybatis – MyBatis 3 | XML 映射器https://mybatis.org/mybatis-3/zh/sqlmap-xml.html"re ...

  4. mybatis中的resultMap与resultType、parameterMap与 parameterType的区别

    Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与  parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...

  5. mybatis中的resultMap,超详细讲解

    使用mybatis,有两个属性标签<resultType>.<resultMap>可以提供结果映射. 虽然resultType 属性在大部分情况下都够用,但是在一些特殊情况下无 ...

  6. MyBatis中的@Mapper注解及配套注解使用详解

    https://blog.csdn.net/phenomenonstell/article/details/79033144 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写 ...

  7. Mybatis中的@Param注解

    前言 今天在使用Mybatis时遇到一个问题,主要出错原因在于Mybatis的@Param注解,如果我不在参数前面加上@Param注解,数据库操作就会报错,如下: @Param作用 @Param注解的 ...

  8. Mybatis中的@SelectKey注解

    一.创建Maven项目 在pom.xml中,添加mybatis依赖,mysql-jdbc依赖,把编译版本改为1.8 你问,为啥mybatis不会自动依赖mysql-jdbc,需要手动写明?答:因为my ...

  9. MyBatis中的resultMap两个association

    查询一个类,需要带出来其他两个类 投递简历Vo @ApiModel(value="投递简历Vo") public class SendResumeVo implements Ser ...

最新文章

  1. 深度学习损失函数大全
  2. 8. An Introduction to MCMC for Machine Learning (1)
  3. petshop详解之五:PetShop之业务逻辑层设计
  4. 数据结构--图(Graph)详解(一)
  5. 腾讯AI Lab的研究方向
  6. 开发自上而下的Web服务项目
  7. linux下练习 c++ 容器set、multimset的特性
  8. 林群院士:做科普也可以创新,和做科研一样
  9. iOS逆向之旅(进阶篇) — 重签名APP(一)
  10. js设置时间在ie中部兼容总是NAN的问题
  11. 运行PCL代码出现C2988,C2143,C2913等错误
  12. 小程序分类图标提取_微信全国垃圾分类小程序上线,一键搜索轻松分类垃圾
  13. playm3u8插件android,playm3u8播放器
  14. 探索Holo_java操作日期
  15. 洛谷P1792 [国家集训队]种树 题解
  16. 计算机系统文件夹打不开,为什么打不开文件夹
  17. 自学七天,我是如何通过软考系统架构师
  18. 应急通信系统|消防应急指挥系统
  19. shiro最详细的解读
  20. 从未改过的网名,一如既往的孤荷凌寒——我的信息技术之路之五

热门文章

  1. 广州戒上健康科技运营模式遭遇涉传质疑
  2. IntelliJ IDEA 2020.1配置svn
  3. python爬虫框架论文开题报告怎么写_论文开题报告范例
  4. 离散数学及其应用复盘 | 第3版第5章——二元关系思维导图梳理(复习专用)
  5. 华为mate40 上市时间已定
  6. 从流程驱动到数据驱动 银行业数据平台架构的演进
  7. 移动端事件 touchstart、touchmove、touchend
  8. 微信小程序获取微信用户绑定的手机号
  9. 商用平板市场第一品牌联想助力高质量个性化教学落地
  10. 阿里云主机详解:ECS/轻量/虚拟主机/GPU/裸金属/云电脑详解