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>