Mybatis——使用注释方式查询出关联的对象
2016-09-02 13:35
351 查看
现有如下需求:
某个类中存在其他类的对象,但在数据库中只存了该对象的id。如果我们需要在查询数据时将关联对象一并查出,需要手动配置以下。
下面以注解的方式演示
给出两个类:InputParam和Api类,InputParam中存在Api类的对象
在InputParamMapper中,有一个用于查询的方法:
在方法上使用@Select注解配置查询所需要的SQL,使用@Results配置结果集,使用@Result配置某一个数据库字段与实体类属性之间的关系。由于其他属性都是普通属性,故不需要特殊处理。
为了关联查询出Api对象,我们需要进行特别配置。使用@Result映射属性与字段之间的关系,property是类中的属性,column是数据库中的字段,使用one表示获取关联关系中【一】的一方。在@One中,指定 查询该对象的Mapper的方法(以column作为参数的),这样就能将该对象查出来并赋值给相应属性。
某个类中存在其他类的对象,但在数据库中只存了该对象的id。如果我们需要在查询数据时将关联对象一并查出,需要手动配置以下。
下面以注解的方式演示
给出两个类:InputParam和Api类,InputParam中存在Api类的对象
public class InputParam { private Integer inputParamId; private Api api; //关联Api类的对象 private String paramName; private String paramDisplay; private String paramType; private Boolean optional; private String paramDefault; //省略getter&setter... }
public class Api { private Integer apiId; private String component; private String clientApi; private String scribeDescribe; private String clientApiVersion; private Integer invokeTimeout; private String authType; private Boolean sessionRequire; private Boolean openType; //省略... }
在InputParamMapper中,有一个用于查询的方法:
@Select("SELECT * FROM inputParam WHERE inputParamId = #{id}") @Results({ //查询关联对象 @Result(property = "api", column = "apiId", one = @One(select = "com.tuya.mapper.ApiMapper.selectById")) }) InputParam selectById(@Param("id") int id);
在方法上使用@Select注解配置查询所需要的SQL,使用@Results配置结果集,使用@Result配置某一个数据库字段与实体类属性之间的关系。由于其他属性都是普通属性,故不需要特殊处理。
为了关联查询出Api对象,我们需要进行特别配置。使用@Result映射属性与字段之间的关系,property是类中的属性,column是数据库中的字段,使用one表示获取关联关系中【一】的一方。在@One中,指定 查询该对象的Mapper的方法(以column作为参数的),这样就能将该对象查出来并赋值给相应属性。
相关文章推荐
- mybatis使用注释方式查询出关联的对象
- Mybatis学习(八)mybatis环境下以接口的方式进行的关联表查询
- Hibernate hsql查询 使用 分组函数,case when 子句及关联其他对象
- Mybatis使用Mapper代理的方式生成DAO接口的实现类对象
- mybatis 查询多表数据使用collection处理一对多关联
- mybatis中查询有复杂关联对象的结果集
- mybatis下oracle查询语句where xxx in(aa,bb)的使用方式
- MyBatis之自查询使用递归实现 N级联动效果(两种实现方式)
- mybatis一对一关联查询无法查出关联对象的数据的解决
- 使用hibernate的Criteria来动态改变对象关联方式
- myBatis 中查询多表数据时使用association处理一对一关联
- mybatis 使用resultMap实现关联数据的查询(association 和collection )
- mybatis-查询(resultMap,关联单个对象)-14
- 关于mybatis多对多关联查询 下面的例子让新手看不错。可以改进的一点是 1、不必建立 关联对象实体,可以用map传递两个id进去 2、文章的resultMa
- mybatis一对一关联查询无法查出关联对象的数据的解决
- Mybatis 使用Mapper接口的Sql动态代码方式进行CURD和分页查询
- MyBatis笔记----多表关联查询两种方式实现
- mybatis连表查询不能查询到关联对象的值
- 【Maven+SSM】Mybatis基础使用及动态SQL拼接根据对象查询数据