Mybatis 注解接口一对一快捷关联查询简单例子@Results@Result@One

这是一对一,即一夫一妻式的数据关联关系的查询

1,准备实体类C1和C2,数据库D1和D2,准备好Mybatis配置文件等相关条件

2,写注解接口

@Results用于包含多个@Result,

@Result用于指定类-表属性字段对应,

其中column = "xx"表示将C2中的xx字段内容用作调用@One中selectC2ByX的参数

property = "C1"表示@One返回的类型是C1

@One用于调用第二个查询语句

package com.xxx.dao;

import com.xxx.xxx.C2;
import org.apache.ibatis.annotations.One;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
public interface xxx {

    public interface C2Mapper {
        @Select("select * from D2 where x=#{x}")
        @Results({@Result(column = "xx",property = "C1",
                one = @One(select = "com.xxx.dao.C2Mapper.selectC2ByX"))})
        C2 selectC2ByX(int x);
    }

}

第二个查询语句

package com.xxx.dao;

import com.xxx.xxx.C1;
import org.apache.ibatis.annotations.Select;

public interface C1Mapper {
    @Select("select * from D1 where x=#{x}")
    C1 selectC2ByX(int x);
}

3,写Mybtis配置文件

        <mapper class="com.xxx.dao.C1Mapper"/>
        <mapper class="com.xxx.dao.C2Mapper"/>

4,调用

    @Test
    public void selectC2ByXTest(){
        String resources = "mybatis-config.xml";
        Reader reader=null;
        try{
            reader= Resources.getResourceAsReader(resources);
        } catch (IOException e){
            e.printStackTrace();
        }
        SqlSessionFactory sqlMapper=new SqlSessionFactoryBuilder().build(reader);
        SqlSession session = sqlMapper.openSession();
        
        C2aMapper mapper = session.getMapper(C2Mapper.class);
        C2 c2 = C2.selectC2ByX(x);
        System.out.println(c2.toString());
        session.close();
    }

5,实际调用结果的形式

C2{  x ,  C2{}} 

即C2中包含C1

 C1{x=x, xx='xx', c2=C2{x=x, xx='xxxx'}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值