mybatis中@Results,@ResultMap注解使用
一、Results的用法
- 用法一:
当数据库字段名与实体类对应的属性名不一致时,可以使用@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();
- 用法二:当@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)
- 用法三:
需要通过查询到的字段去查询另外一个方法,将查询结果作为本次查询的一个属性
- @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注解使用相关推荐
- mybatis中的ResultMap使用
mybatis中的ResultMap使用 文章目录 mybatis中的ResultMap使用 一.自动映射 二.手动映射 1.返回值类型为resultMap 2.编写resultMap,实现手动映射! ...
- MyBatis中的常用注解
在MyBatis中,一些SQL语句例如(select * from 表名;delete from 表名)等等,这些SQL语句比较简单,没有那些复杂的关联关系,但是在不用注解的情况下,要执行这些方法的话 ...
- 浅谈MyBatis中的resultMap(个人总结)
官方文档: mybatis – MyBatis 3 | XML 映射器https://mybatis.org/mybatis-3/zh/sqlmap-xml.html"re ...
- mybatis中的resultMap与resultType、parameterMap与 parameterType的区别
Map:映射:Type:Java类型 resultMap 与 resultType.parameterMap 与 parameterType的区别在面试的时候被问到的几率非常高,项目中出现了一个小b ...
- mybatis中的resultMap,超详细讲解
使用mybatis,有两个属性标签<resultType>.<resultMap>可以提供结果映射. 虽然resultType 属性在大部分情况下都够用,但是在一些特殊情况下无 ...
- MyBatis中的@Mapper注解及配套注解使用详解
https://blog.csdn.net/phenomenonstell/article/details/79033144 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写 ...
- Mybatis中的@Param注解
前言 今天在使用Mybatis时遇到一个问题,主要出错原因在于Mybatis的@Param注解,如果我不在参数前面加上@Param注解,数据库操作就会报错,如下: @Param作用 @Param注解的 ...
- Mybatis中的@SelectKey注解
一.创建Maven项目 在pom.xml中,添加mybatis依赖,mysql-jdbc依赖,把编译版本改为1.8 你问,为啥mybatis不会自动依赖mysql-jdbc,需要手动写明?答:因为my ...
- MyBatis中的resultMap两个association
查询一个类,需要带出来其他两个类 投递简历Vo @ApiModel(value="投递简历Vo") public class SendResumeVo implements Ser ...
最新文章
- 深度学习损失函数大全
- 8. An Introduction to MCMC for Machine Learning (1)
- petshop详解之五:PetShop之业务逻辑层设计
- 数据结构--图(Graph)详解(一)
- 腾讯AI Lab的研究方向
- 开发自上而下的Web服务项目
- linux下练习 c++ 容器set、multimset的特性
- 林群院士:做科普也可以创新,和做科研一样
- iOS逆向之旅(进阶篇) — 重签名APP(一)
- js设置时间在ie中部兼容总是NAN的问题
- 运行PCL代码出现C2988,C2143,C2913等错误
- 小程序分类图标提取_微信全国垃圾分类小程序上线,一键搜索轻松分类垃圾
- playm3u8插件android,playm3u8播放器
- 探索Holo_java操作日期
- 洛谷P1792 [国家集训队]种树 题解
- 计算机系统文件夹打不开,为什么打不开文件夹
- 自学七天,我是如何通过软考系统架构师
- 应急通信系统|消防应急指挥系统
- shiro最详细的解读
- 从未改过的网名,一如既往的孤荷凌寒——我的信息技术之路之五
热门文章
- 广州戒上健康科技运营模式遭遇涉传质疑
- IntelliJ IDEA 2020.1配置svn
- python爬虫框架论文开题报告怎么写_论文开题报告范例
- 离散数学及其应用复盘 | 第3版第5章——二元关系思维导图梳理(复习专用)
- 华为mate40 上市时间已定
- 从流程驱动到数据驱动 银行业数据平台架构的演进
- 移动端事件 touchstart、touchmove、touchend
- 微信小程序获取微信用户绑定的手机号
- 商用平板市场第一品牌联想助力高质量个性化教学落地
- 阿里云主机详解:ECS/轻量/虚拟主机/GPU/裸金属/云电脑详解