MyBatis第五讲:MyBatis关联查询

七、MyBatis关联查询

7、1MyBatis实现一对一关联查询

当数据库出现表与表之间一对一关联时,通过resultMap映射出实体信息


DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.demo.DAO.LogMapper">
  
  <resultMap id="oneToone" type="com.demo.entity.Log">
    <id column="id" property="id"/>
    <result property="userId" column="userId"/>
    <result property="bookId" column="bookId"/>
    
    <association property="book" javaType="com.demo.entity.Book">
      <id  property="id" column="id"/>
      <result property="name" column="name"/>
      <result property="price" column="price"/>
    association>
  resultMap>
  <select id="findAll" resultMap="oneToone">
    select l.*,b.* from log l,book b where l.bookId=b.id
  select>
mapper>

7、2MyBatis实现一对多关联查询

当数据库出现表与表之间一对多关系时,一的一方可以获取到多的一方的集合,多的一方可以获取到一的一方的对象

<resultMap id="bookType" type="com.demo.entity.Book">
  
  <id column="id" property="id" javaType="integer" jdbcType="INTEGER"/>
  
  <result column="name" property="name" javaType="String" jdbcType="VARCHAR"/>
  <result column="price" property="price" javaType="_double" jdbcType="DOUBLE"/>
  
  <collection property="logList" ofType="com.demo.entity.Log" column="bookId">
    <id column="lid" property="lid"/>
    <result property="userId" column="userId"/>
    <result property="bookId" column="bookId"/>
  collection>
resultMap>

注意:有时我们为了方便,在不同的表中存在相同字段名,或在不同实体对象中存在相同属性名,这样在关联查询时可能会造成查询结果不正确,经常遇到的就是集合中只有一条数据,但是在数据库中存在多条结果,这样问题,只要调整字段名和属性名即可。

7、3MyBatis实现多对多关联查询

多对多查询,它的本质就是两个一对多的组合,同样它所使用的标签元素也是 collection标签

<resultMap id="bookType" type="com.demo.entity.Book">
  
  <id column="id" property="id" javaType="integer" jdbcType="INTEGER"/>
  
  <result column="name" property="name" javaType="String" jdbcType="VARCHAR"/>
  <result column="price" property="price" javaType="_double" jdbcType="DOUBLE"/>
  
  <collection property="logList" ofType="com.demo.entity.Log" column="bookId">
    <id column="lid" property="lid"/>
    <result property="userId" column="userId"/>
    <result property="bookId" column="bookId"/>
  collection>
resultMap>

你可能感兴趣的:(MyBatis,mybatis,java,mysql)