Mybatis注解@Results、@Result、@ResultMap

您所在的位置:网站首页 mybatisplus默认值注解 Mybatis注解@Results、@Result、@ResultMap

Mybatis注解@Results、@Result、@ResultMap

2023-09-18 17:44| 来源: 网络整理| 查看: 265

 

先来看一组代码:

@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 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 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 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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3