Mybatis 一对一与一对多查询

Mybatis 一对一与一对多查询

在关系型数据库中,多个表之间有时会存在着一定的关系,这些关系可以统分为三类,一对一,一对多和多对多!

一对一关系

两个表之间存在着唯一对应的一种关系,就叫一对一的关系,这是表关系中较简单的一种对应关系!

比如:一个学生有一个班级,并且只能确定一个班级,一个商品订单只能是属于一个用户的,这样唯一对应的关系就是一对一的关系!

  • mybatis的代码实现:

测试代码

@Test
public void test04 () {

        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        //创建sqlsessionFactory
        //读取核心配置文件
        InputStream inputStream = TestSqlSession.class.getClassLoader().getResourceAsStream("config/sqlMapConfig.xml");

        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        //创建sqlsession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        ProductDao mapper = sqlSession.getMapper(ProductDao.class);

        List<Products> list = mapper.findAllProductAndCategory();
        System.out.println(list);
        sqlSession.commit();
        sqlSession.close();

    }

dao层接口

public List<Products> findAllProductAndCategory();

mapper映射文件

<resultMap id="findAllProductAndCategoryMap" type="com.jsu.bean.Products" autoMapping="true">
        <association property="category" javaType="com.jsu.bean.Category" autoMapping="true">

        </association>
    </resultMap>

    <select id="findAllProductAndCategory" resultMap="findAllProductAndCategoryMap">
        select * from products p left join category c on p.category_id = c.cid
    </select>

一对多关系

两个表中,其中一个表中的一条数据,对应着另一个表中的多条数据的关系就是一对多的关系!

比如:一个班级可以有多个学生,一个用户可以下多个商品订单!

  • mybatis代码的实现

测试代码

@Test
    public void test05 () {

        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();

        //创建sqlsessionFactory
        //读取核心配置文件
        InputStream inputStream = TestSqlSession.class.getClassLoader().getResourceAsStream("config/sqlMapConfig.xml");

        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
        //创建sqlsession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        ProductDao mapper = sqlSession.getMapper(ProductDao.class);

        List<Category> list = mapper.findAllCategory();
        System.out.println(list);
        sqlSession.commit();
        sqlSession.close();

    }

dao层

public List<Category> findAllCategory();

mapper映射文件

<resultMap id="findAllCategoryMap" type="com.jsu.bean.Category" autoMapping="true">
        <collection property="productsList" ofType="com.jsu.bean.Products" autoMapping="true">

        </collection>
    </resultMap>

    <select id="findAllCategory" resultMap="findAllCategoryMap">
        select * from category c left join products p on c.cid = p.category_id
    </select>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值