@Result中常用的属性是column和property,用于配置数据库中的列名和类中的属性名之间的映射关系。另外one和many用于关联查询。比如上面列子中提到的Group类中包含属性List userList,这时集合类型数据,与Group是一对多的关系,需要用many配置,如果Group中需要对象类型数据User user,那么就需要使用one进行配置。这里我们以many为例进行说明:

@Results(id="groupWithUsers",value = { @Result(property = "groupId", column = "group_id", id = true),@Result(property = "name", column = "name"), @Result(property = "accountId", column = "account_id"),@Result(property = "deleteFlag", column = "delete_Flag"),@Result(property = "parentId", column = "parent_Id"), @Result(property = "userList", javaType=List.class, many =@Many(select="selectUsersByGroupId"), column = "group_id")})
//查询
@Select({"select * from group where account_id=#{accountId} and delete_flag=0"})
List<Group> selectGroupWithUsers(@Param("accountId") String accountId);@Select({"select u.* from user u","inner join user_group ug on u.user_id = ug.user_id","where ug.group_id=#{groupId} and u.delete_flag=0"})
List<User> selectUsersByGroupId(@Param("groupId") String groupId);

我们的接受的对象Group中的字段:(User类中的映射关系这里就不再赘述)

@Data
public class Group {private String groupId;private String name;private String accountId;private String parentId;private String type;private List<User> userList;
}

调用List selectGroupWithUsers(@Param(“accountId”) String accountId);查出的结果为:

从结果中可以看出,查询出的列和Group中属性信息的映射关系是在@Results中value属性的@Result注解进行配置的,这里与mybatis的xml配置文件开发基本相同。再看一下userList包含了user信息,也就是selectUsersByGroupId方法被调用,查询结果被封装在Group类中的userList字段中。而selectUsersByGroupId方法被调用的配置在@Many注解中。下面我们来卓层分析一下@Results注解及注解中的属性信息:

@Results注解:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Results {String id() default "";  //当前Results注解的唯一标识Result[] value() default {};  //value值为Result[]数组
}

@Results中只有两个属性,id和value,id作为当前@Results注解的唯一标识很好理解;value值为@Result数组,下面我们看一下@Result的信息:

@Result:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({})
public @interface Result {boolean id() default false;  //id唯一标识String column() default "";  //对应数据库中的列名String property() default ""; //对应类中的属性名Class<?> javaType() default void.class;  //数据类型JdbcType jdbcType() default JdbcType.UNDEFINED;  //jdbc类型Class<? extends TypeHandler> typeHandler() default UnknownTypeHandler.class;One one() default @One;  //一对一配置Many many() default @Many;  //一对多配置
}

@Result中常用的属性是column和property,用于配置数据库中的列名和类中的属性名之间的映射关系。另外one和many用于关联查询。比如上面列子中提到的Group类中包含属性List userList,这时集合类型数据,与Group是一对多的关系,需要用many配置,如果Group中需要对象类型数据User user,那么就需要使用one进行配置。这里我们以many为例进行说明:

@Result中many的应用:
@Many:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({})
public @interface Many {String select() default "";  //选择要执行的方法FetchType fetchType() default FetchType.DEFAULT;  //枚举值,懒加载、及时加载、默认
}

@Many中常用的属性只有selet,用于指定关联查询的方法

但是存在many属性的@Result注解的使用就有些变化:如下面的这段代码中,column属性的值为"group_id",是group表中的列,也是作为参数传递到selectUsersByGroupId中进行查询的参数。


MyBatis中使用@Results注解来映射查询结果集到实体类属性。

(1)@Results的基本用法。当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。

关于@Result注解的说明相关推荐

  1. MyBatis——@Result注解column参数传递多个参数

    问题描述 @Result注解column参数传递多个参数. 官方文档 property description column 数据库的列名或者列标签别名.与传递给resultSet.getString ...

  2. MyBatis——@Result注解column参数传递——父查询函数的参数传递到子查询

    问题描述 假设a方法中传入一个带查询参数x 但是a方法的查询结果中不包含参数x 而子查询里也需要参数x 如何在子查询b中带入参数x /*** 按User表中platform查询User*/@Selec ...

  3. Mybatis注解学习记录

    Mybatis注解使用 1. SQL语句映射 1.1 @Select注解:实现查询功能 1.1.1 用法 1.2 @Insert注解:实现新增功能 1.2.1 用法 1.3 @Update注解:实现更 ...

  4. MyBatis-07MyBatis注解方式之@Select

    概述 @Select注解 通过数据库字段别名方式映射到实体类属性 1. RoleMapper接口增加接口方法,同时标注注解 2.单元测试 通过mapUnderscoreToCamelCase完成数据库 ...

  5. Mybatis CRUD注解Annotation的使用

    @Select,@Insert,@Update,@Delete完成常见的增删改查sql语句的映射. 注解和xml配置中的sql语法一致. @Options注解,使用数据库自动增长的主键,需要底层数据库 ...

  6. java 字段映射注解_mybatis注解开发中实体属性和表字段不对应问题

    在项目的实际开发中,有可能会遇到实体类中的属性名与列名不相同,不能改但.导致不能自动装配值的问题,此时可以接合@Results.@Result.@ResultMap实现开发 1.@Results注解 ...

  7. SpringBoot + MyBatis(注解版),常用的SQL方法

    一.新建项目及配置 1.1 新建一个SpringBoot项目,并在pom.xml下加入以下代码 <dependency> <groupId>org.mybatis.spring ...

  8. Mybatis—注解开发

    Mybatis的注解开发 MyBatis的常用注解 这几年来注解开发越来越流行,Mybatis也可以使用注解开发方式,这样我们就可以减少编写Mapper映射文件了. @Insert:实现新增 @Upd ...

  9. springboot 中使用 Mybatis 注解 配置 详解

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 传参方式 使用不同的传参方式: 使用@Param 之前博文中的项目使用了这种简单的传参方式: @In ...

  10. Spring Boot中使用MyBatis注解配置详解

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

最新文章

  1. 关于ADAM中自定义Class Schema后不能创建该Class的实例的问题
  2. solrCloud源码分析之CloudSolrClient
  3. SAP Spartacus读取User Address的请求发送和接收源头
  4. setseed_Java Random setSeed()方法与示例
  5. TCP/IP网络协议栈:以太网数据包结构、802.3、MTU
  6. java系列3:数组初始化(基本格式)
  7. 全国计算机等级内容,全国计算机等级内容
  8. python爬虫设计思路_python网络爬虫(9)构建基础爬虫思路
  9. 雅礼集训Day3-难题选讲
  10. html2canvas ios 15.0截屏 变黑 页面刷新
  11. 请假代码java web_学生请假管理系统
  12. Vue封装Tabs标签页
  13. NFPA-持续为美国贡献防火国家规范的非政府协会
  14. 生存预测 : kaggle titanic 泰坦尼克号 逻辑回归(Logistic回归) tensorflow版
  15. JAVA 启动JVM时,Xms和Xmx参数
  16. 字符类型与整形之间的转换
  17. Qt之TableView使用
  18. QMI8658 - 姿态传感器学习笔记 - Ⅰ
  19. PID 控制保姆级培训教程下-全国大学生电子设计大赛赛前必备
  20. ORACLE公司的历史

热门文章

  1. 计算机学院优秀主讲教师评选细则,重庆师范大学计算机学院教学优秀奖评选办法.doc...
  2. RTKLIB-学习笔记
  3. 网络—— 数据链路层,MTU
  4. LeetCode 2300. 咒语和药水的成功对数
  5. 印度体育教育初创公司 KOOH Sports 获得 220 万美元风险投资
  6. 什么是台式机主板的“双通道”认知误区?
  7. 软键盘遮挡edittext_Android软键盘遮挡的四种解决方案
  8. B2C模式电商案例分享
  9. python编程选股_python编写选股公式
  10. Bro脚本语法4-声明和语句(Declarations and Statements)